1、 set(集合)——包含了经过排序了的数据,这些数据的值(value)必须是唯一的。
也就是说输入set容器后得到数据,会去重并排序。
s.insert()插入一个元素
s.begin() s.end()分别返回首尾指针
s.clear() 清空集合
遍历需要利用迭代器set<类型>::iterator 变量名 ;
2、stringstream(容器)—— 可以将放入其中的string串按空格分隔成单词(感觉就是一个过滤的)
3、vector(不定长数组)——不需要定义初始长度的数组
v.push_back()向尾部插入一个元素
v.size()返回数组大小
v.pop_back()删除最后一个元素
v.insert(v[0]+i,a)在第i+1个元素后插入元素a
常用的就这几个成员函数,看看粘的网上的介绍:
基本操作
(1)头文件#include<vector>.
(2)创建vector对象,vector<int> vec;
(3)尾部插入数字:vec.push_back(a);
(4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。
(5)使用迭代器访问元素.
(6)插入元素: vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;
(7)删除元素: vec.erase(vec.begin()+2);删除第3个元素
vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始
(8)向量大小:vec.size();
(9)清空:vec.clear();
4、map(映射)——map就是从键(key)到值(value)的映射。例如可以这样用:
先定义map<string,int> m; 赋值m["green"]=8 。看起来就是数组的高级版,可以改变下标的表示。
当遇到让我们计算 一篇文章中某单词出现的次数时,(如果它只提问一次单词a出现的次数,那么我们直接遍历一次,但是如果它问了很多次时,总不能一遍遍遍历吧,会超时的)这时候就用到映射了。
直接看示例:
5、queue(队列)——“先进先出”的一种数据结构,感觉这些容器就是把数组改造,添加一些成员函数,使它用起来更方便些,理解的时候可以对照如果用数组实现这样的功能有多麻烦。
其本操作:
1、定义:queue<int> q;
2、 q.push(a) 将元素a加入队列
q.front()访问首元素
q.back() 访问尾元素
q.pop() 删除首元素
q.size()返回元素个数
q.empty()判断队列是否为空
6、stack(栈)——“先进后出”的一种数据结构,和队列类比看。
其本操作:
1、定义:stack<int> s;
2、 s.push(a) 将元素a压入栈
s.top()访问栈顶元素
s.pop() 删除栈顶元素
s.size()返回元素个数
s.empty()判断栈是否为空
待续……