1. 程式人生 > >STL使用方法總結(入門)

STL使用方法總結(入門)

初始 元素 索引 ID 指針 內容 size con mil

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

可以隨意插入,刪除數據

  1. #include<vector>
  2. 定義及初始化

vector<int> vec;

Vector<int> vec(10); 指定元素個數

Vector<int>vec(arr,arr+n);

可以使用類似於數組的操作[]: vec[x];

  1. 基本操作:

Push_back() 添加到容器末尾

Size() 獲取元素數量

Insert( pos, value)指定索引處插入元素

Insert(pos,cnt,value)指定索引處添加cnt個 value元素

Pop_back() 刪除末位元素

Begin() 第一元素的叠代器

End() 叠代器

Swap() void swap(vector &other)將兩個矢量的內容交換

  1. 遍歷

下標法:vec[i]

叠代器法:

Vector<int>::iterator it;

For(it=vec.begin();it!=vec.end();it++)

Cout<<*iterator;

Stack

  1. #include<stack>
  2. 定義初始化

Stack<string>s;

  1. 基本操作:

Push();

Pop(); 刪除棧頂元素

Top(); 訪問棧頂元素

Empty();

Queue

  1. #include<queue>
  2. Queue<int> q;
  3. Push(); 隊尾插入

Pop(); 刪除第一個元素

Empty();

Size();

Priopity_queue

優先隊列,實現自動排序

  1. #include<queue>
  2. Priopity_queue<int,vector<int>,greater<int> >pq; 從小到大

Priopity_queue<int,vector<int>,less<int> >pq; 從大到小

Map

元素默認按鍵的升序排列

  1. #include<map>
  2. Map<string,int>m;

可以使用類似數組的操作[]: m[key]=value

  1. 基本操作

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

元素默認升序排列

  1. #include<set>
  2. Set<int> s;

初始化:用數組存放數據,然後用數組初始化set

Int arr[5]={........};

Set<int> s(arr,arr+5);

自定義集合的排列順序,編寫class對象函數,判斷大小:set<int,class> s;

  1. 基本操作:

Insert();

Erase();

Count(); 返回某個值元素的個數,也可用於判斷集合中是否存在該值

Find(); 返回一個指向被查到元素的叠代器

STL使用方法總結(入門)