STL使用方法總結(入門)
Iterator
用於操作復雜的數據結構,類似於指針,指向數據結構的位置,*it用於讀取數據
關於嵌套容器的叠代器使用:
set< vector<int> >::iterator it;
for(it=s.begin();it!=s.end();it++)
{
vector<int> ivec=*it;
for(vector<int>::iterator it2=ivec.begin();it2!=ivec.end();it2++)
cout<<*it2<<",";
ivec.clear();
cout<<endl;
}
Vector
可以隨意插入,刪除數據
- #include<vector>
- 定義及初始化
vector<int> vec;
Vector<int> vec(10); 指定元素個數
Vector<int>vec(arr,arr+n);
可以使用類似於數組的操作[]: vec[x];
- 基本操作:
Push_back() 添加到容器末尾
Size() 獲取元素數量
Insert( pos, value)指定索引處插入元素
Insert(pos,cnt,value)指定索引處添加cnt個 value元素
Pop_back() 刪除末位元素
Begin() 第一元素的叠代器
End() 叠代器
Swap() void swap(vector &other)將兩個矢量的內容交換
- 遍歷
下標法:vec[i]
叠代器法:
Vector<int>::iterator it;
For(it=vec.begin();it!=vec.end();it++)
Cout<<*iterator;
Stack
- #include<stack>
- 定義初始化
Stack<string>s;
- 基本操作:
Push();
Pop(); 刪除棧頂元素
Top(); 訪問棧頂元素
Empty();
Queue
- #include<queue>
- Queue<int> q;
- Push(); 隊尾插入
Pop(); 刪除第一個元素
Empty();
Size();
Priopity_queue
優先隊列,實現自動排序
- #include<queue>
- Priopity_queue<int,vector<int>,greater<int> >pq; 從小到大
Priopity_queue<int,vector<int>,less<int> >pq; 從大到小
Map
元素默認按鍵的升序排列
- #include<map>
- Map<string,int>m;
可以使用類似數組的操作[]: m[key]=value
- 基本操作
Insert( make_pair<string,int>(key,value) ) 在原map後繼續插入鍵值對
Insert( map<string,int>::value_type(key,value) ) 插入到map的最前面
獲取map的key,value要用到叠代器
Map<string,int>::iterator it=m.begin(); 必須要獲取叠代器首地址
String key=it->first; int val=it->second; 鍵key是第一個,值value是第二個
Erase(key); 根據key刪除value
Set
元素默認升序排列
- #include<set>
- Set<int> s;
初始化:用數組存放數據,然後用數組初始化set
Int arr[5]={........};
Set<int> s(arr,arr+5);
自定義集合的排列順序,編寫class對象函數,判斷大小:set<int,class> s;
- 基本操作:
Insert();
Erase();
Count(); 返回某個值元素的個數,也可用於判斷集合中是否存在該值
Find(); 返回一個指向被查到元素的叠代器
STL使用方法總結(入門)