STL是很方便的一个东西,接下来就是我对STL的总结。
1、容器
vector:
下标从0开始,与普通数组类似,二维vector书写方式为vector<vector<int> > 注意两个">"中间一定要有空格
如果需要二维或以上的vector,则需要一个特别操作,就是增加空行,例如一个有n行的二维vector:
vector<vector<int> > a; for(int i=0;i<n;i++) { a.push_back({}); a[i].push_back(1);//可直接在每行加入元素,注意不要越界 }
例如一个有n行m列的三维vector:
vector<vector<vector<int> > > a; for(int i=0;i<n;i++) { a.push_back({}); for(int j=0;j<m;j++) { a[i].push_back({}); } }
set:
不重复容器
加入元素和vector不同,需要用s.insert(x)语句,x为想要加入的元素
访问元素也与vector不同,需要迭代器iterator,例如:
for(set<int>::iterator it=s.begin();it!=s.end();it++) cout<<*it<<" ";
queue:
队列
queue<type> QueueName;//
pair:
映射
map:
关联容器
2、sort
sort可以方便排序,和重载运算符一样。
sort(a+1,a+n+1)默认从小到大排序
sort(a+1,a+n+1,cmp)按cmp规定排序,一般用于结构体排序中
cmp是一个函数,返回类型为bool类型,以下为例子:
struct abc { int x,y; }; bool cmp(abc f1,abc f2) { return f1.x<f2.x;//以结构体中的x变量为基准,从小到大排序 }
sort(a.begin(),a.end())vector、set的排序
如果想从第2个元素(即下标为1)开始排序,只需将语句改为sort(a.begin()+1,a.end()),其他的以此类推
3、string
+:插入字符
ascll码:把数字转换为字符,具体见https://baike.baidu.com/item/ASCII/309296?fr=aladdin
结束语:以上就是总结的全部内容,重要或要注意的点已为大家用粗体标出,希望对大家有所帮助,喜欢记得三连哟!
全部评论
(1) 回帖