C++刷題精髓在STL編程,還有一些函數。下面我就總結一下本人在刷題過程當中,每逢碰見總要百度的內容………………(大機率由於本人刷題太少了)編程
1. mapless
map<string, int> m;函數
map<int, int> m;spa
key-value一一對應,一個key只能有一個value,且m按key自動排序.net
begin() 返回指向map頭部的迭代器
clear() 刪除全部元素
count() 返回指定元素出現的次數
empty() 若是map爲空則返回true
end() 返回指向map末尾的迭代器
erase() 刪除一個元素
find() 查找一個元素
insert() 插入元素
size() 返回map中元素的個數
code
迭代:blog
map<int, int> ::iterator it; for(it = m.begin();it != m.end();it++) { cout << it->first << it->second << endl; }
2. vector排序
vector<int> vec;隊列
尾部插入數字:vec.push_back(a);get
使用下標訪問元素,cout<<vec[0]<<endl;
插入元素: vec.insert(vec.begin()+i,a);在第i+1個元素前面插入a;
刪除元素: vec.erase(vec.begin()+2);刪除第3個元素
vec.erase(vec.begin()+i,vec.end()+j);刪除區間[i,j-1];區間從0開始
向量大小:vec.size();
清空:vec.clear();
迭代:
vector<int>::iterator it; for(it=vec.begin();it!=vec.end();it++) cout<<*it<<endl;
3. set
set<int> s;
begin()--返回指向第一個元素的迭代器
clear()--清除全部元素
count()--返回某個值元素的個數
empty()--若是集合爲空,返回true
end()--返回指向最後一個元素的迭代器
erase()--刪除集合中的元素
find()--返回一個指向被查找到元素的迭代器
insert()--在集合中插入元素
size()--集合中元素的數目
swap()--交換兩個集合變量
迭代:
set<int>::iterator it; for(it=s.begin();it!=s.end();it++) cout<<*it<<endl;
4. queue
queue<int> q;
入隊,q.push(x); 將x 接到隊列的末端。
出隊,q.pop(); 彈出隊列的第一個元素,注意,並不會返回被彈出元素的值。
訪問隊首元素,q.front(),即最先被壓入隊列的元素。
訪問隊尾元素,q.back(),即最後被壓入隊列的元素。
判斷隊列空,q.empty(),當隊列空時,返回true。
訪問隊列中的元素個數,q.size()
while(!q.empty()) { q.front(); q.pop(); }
5. priority_queue
https://blog.csdn.net/weixin_36888577/article/details/79937886
priority_queue <int,vector<int>,greater<int> > q; //升序隊列
priority_queue <int,vector<int>,less<int> >q; //降序隊列
greater和less是std實現的兩個仿函數(就是使一個類的使用看上去像一個函數。其實現就是類中實現一個operator(),這個類就有了相似函數的行爲,就是一個仿函數類了)
和隊列基本操做相同:
- top 訪問隊頭元素
- empty 隊列是否爲空
- size 返回隊列內元素個數
- push 插入元素到隊尾 (並排序)
- emplace 原地構造一個元素並插入隊列
- pop 彈出隊頭元素
- swap 交換內容
6. stack
stack<int> s1;
stack<string> s2;
入棧,s.push(x);
出棧,s.pop();注意,出棧操做只是刪除棧頂元素,並不返回該元素。
訪問棧頂,s.top()
判斷棧空,s.empty(),當棧空時,返回true。
訪問棧中的元素個數,s.size()。
while(!s.empty()) { s.top(); s.pop(); }