目录
一.vector
1.定义:
vector<int>a vector<int>b(a) vector<int>a(100) vector<int>a(100,5)
vector<string>a(10,"null") vector<string>b(a.begin(),a.end())
vector<vector<int>>name
2.访问:
下标 迭代器:vector<typename>::iterator it =vi.begin()
vi[i]等效于*(it+i)
3:操作:
a.push_back() a.pop_back() a.size() a.clear() a.insert(it,x) a.erase(it) a.erase(a.begin(),a.end()) a.resize(n) reverse(a.begin(),a.end())
二.stack
1.定义:stack<typename>a
2.访问:先进后出 a.top()
3.操作:
a.push() a.top() a.pop() a.empty() a.size()
三.queue
1.定义:queue<typename>a
2.访问:a.front() a.back()
3.操作:
a.push() a.front() a.back() a.front() a.back() a.pop() a.empty() a.size()
四.priority_queue
1.定义:priority_queue<typename>a
优先级的设置:priority_queue<int>a 等效于 priority<int,vector<int>,less<int>>/*数字大的优先级大
priority<int,vector<int>,greater<int>>a/*数字小的优先级大
重点:结构体的优先级设置(其他stl容器如set同样可以用此方式定义优先级)
struct fruit{string name;int price;
friend bool operator<(fruit f1,fruit f2){
return f1.price<f2.price;}
}f1,f2,f3;;/*对<进行重载 价格高的优先级高(return f2.price<f1.price 则相反)
或者 struct{string name;int price;}f1,f2,f3;
strcuct cmp{
bool operator()(fruit f1,fruit f2){
return f1.price<f2.price;}}
priority_queue<fruit,vector<fruit>,cmp>q;
2.访问:a.top()/*底层是堆
3.操作:a.push() a.top() a.pop() a.empty() a.size()
五.set
1.定义:set<typename> a;/*自动去重并按升序排序
set<int>a[100];
2.访问:迭代器set<int>::iterator it;/*不支持*(it+i)方式 除了vector string
3.操作:a.insert() a.find() a.erase(it) a.erase(x) a.erase(it,a.end()) a.size() a.clear()
六.map
1.定义:map<string,int>mp map<set<int>,string> /*以键的大小升序排序
2.访问:下标 map<char,int>mp mp['c']=3;/*键是唯一的
迭代器map<char,int>::iterator it; it->first;it->second;
3.操作:a.find(key) a.erase(it) a.erase(key) mp.erase(it,a.end()) a.size() a.clear()
七.string
1.定义:string s="abcd"
2.访问:下标 迭代器string::iterator it
3.操作:s1+=s2 s1<=s2 s.size() s.insert(3,s) s.insert(s.begin+3,s1.begin(),s2.end()) s.erase(s.begin+3,s.end()) s.erase(it) s.erase(3,2) s.clear() s.substr(0,5) s.find(s1) s.find(s1,7) string::npos s.replace(10,4,s2) s.replace(s.begin()+10,s.end(),s2) to_string(num) stoi(int) stol(long) stof(float) stod(double) strcpy(a,s.c_str())
八.pair
1.定义:pair<typename,typename> pai<string,int>p("haha",5)
2.访问:迭代器 it->first it->secend
3.操作:代替二元结构体
map<string,int>mp;
mp.insert(pair<string,int>("haha",5));
九.常用函数
next_permutation/*全排列中下一个排列,故要先有序
fill(a,a+5,233) sort(a+1,a+1+n,cmp) sort(s,s+10)
lower_bound(a,a+10,-1)/*寻找范围内第一个值大于等于val的元素位置
upper_bound(a,a+10,-1)/*寻找范围内第一个值大于val的元素位置