pair node stack vector string priority_queue
map
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include <bits/stdc++.h> using namespace std; #define int long long map<char,string> mp; signed main() { ios::sync_with_stdio(0); mp['0'] = "0000";mp['1'] = "0001";mp['2'] = "0010"; mp['A'] = "1010"; map<char,string> :: iterator it; for(it = mp.begin(); it != mp.end();it++) cout << it->first << " " << it->second << endl; cout << "倒序遍历:\n"; for(auto t = --mp.end();;t--){ cout << t->first << " " << t->second << endl; if(t == mp.begin()) break; } cout << "auto的遍历:\n"; for(auto itt : mp) cout << itt.first << " " << itt.second << endl; return 0; }
vector
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include <iostream> #include <vector> #include <algorithm> using namespace std; vector<int> v; int main(){ if(v.empty()) puts("v is empty"); for(int i = 0; i < 10; i ++) v.push_back(i); cout << v.size() << endl; v.insert(v.begin() + 9, 10);//在第10个元素前面插入10 v.push_back(10);//尾部插入10 for(int i = 0; i < v.size(); i++) cout << v[i] << " "; cout << endl; v.erase(v.begin() + 9);//删除第10个 v.pop_back();//删除末尾 for(int i = 0; i < v.size(); i++) cout << v[i] << " "; cout << endl; reverse(v.begin(),v.end());//反转 for(int i = 0; i < v.size(); i++) cout << v[i] << " "; cout << endl; sort(v.begin(),v.end()); for(int i = 0; i < v.size(); i++) cout << v[i] << " "; return 0; }
v [ n ]
返回 v 中位置为 n 的元素。
push_back() 在数组的最后添加一个数据
pop_back() 去掉数组的最后一个数据
begin() 得到数组头的指针
end() 得到数组的最后一个单元+1的指针
empty() 判断vector是否为空
swap() 与另一个vector交换数据
string
长度 | str.length(), str.size() |
---|---|
比较 | str1.compare(str2) |
查找 | pos = str1.find(str2) |
连接 | str1 += str2 |
插入 | str1.insert(pos,str2) |
替换 | str1.replace(pos,n,str2) |
删除 | str1.erase(pos,len) |
清除 | str.clear() |
判空 | str.empty() |
反转 | reverse(s.begin(),s.end()) |
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main(){
string str1,str2,str3;
str1 = "Hello";
str2 = "World";
cout << str1.insert(2,str2) << endl;
cout << str1 << endl;
cout << str1.replace(0,1,str2) << endl;//从下标0开始的1个用str2替换
cout << str3 << endl;
cout << str3.find("World") << endl;
cout << str3.erase(2,3)<< endl;
cout << str3 << endl;
reverse(str3.begin(),str3.end());
cout << str3 << endl;
}
vector 和string基本差不多
priority_queue
建立的时间复杂度O(n)
插入删除时间复杂度O(log n)
升序
priority_queue<int,vector<int>,greater<int>> que;
降序
priority_queue<int> que;
与普通队列
同:在队尾插入,队头删除
异:队列中最大元素总是在队头(这也就是说,出队列不是按照先进先出,而是按照元素大小,从大到小出去)