1.stack
#include<stack>
声明:stack<ElemType> s;
入栈:s.push(elem);
出栈:s.pop();
取栈顶元素:s.top();
栈大小:s.size();
判断是否为空:s.empty();
2.queue
#include<queue>
声明:queue<ElemType> q;
入队:q.push(elem);
出队:s.pop();
取队首元素:s.front();
取队尾元素:s.back();
队列大小:s.size();
判断是否为空:q.empty();
3.priority_queue
和queue操作类似,但是插入进去的元素按照从大到小排序,并非是先进先出。
4.vector
#include<vector>
声明:vector<ElemType> v;
加入元素:v.push_back(elem);
删除容器最后位置处的元素:v.pop_back();
返回指定index位置处的元素:v.at(index);
返回指向容器最开始位置数据的指针:v.begin();
返回指向容器最后一个数据单元的指针+1:v.end();
返回当前容器中实际存放元素的个数:v.size();
清除所有数据:v.clear();
判断容器是否为空:v.empty();
交换两个容器中的数据:v1.swap(v2);
删除指针p指向位置的数据:v.erase(p);
删除begin,end区间的数据:v.erase(begin,end)
在指针p指向的位置插入数据elem:v.insert(p,elem);
在位置p插入n个elem数据:v.insert(p,n,elem);
在位置p插入在区间[begin,end)的数据:v.insert(p,begin,end)
5.sort
#include<algorithm>
函数格式:sort(a, a+n); //a和a+n分别是待排序数组首地址和位地址,默认升序排列
自定义cmp函数:
- int cmp(int a, int b){
- return a>b?1:0;
- }
6.set
set实现了红黑树的数据结构,插入时自动排序,不会重复插入相同的值,而且插入后不能修改。构造set的目的是快速检索。
构造:set<int> s;
插入:s.insert(elem);//默认从小到大插入顺序
删除:s.erase(elem);//删除键值为elem的元素
统计某个数出现次数:s.count(elem);//可以用来判断某个数是否出现
清空:s.clear();
查找:s.find(elem);//查找元素值为elem的元素,返回该键值迭代器位置
遍历:用迭代器
- set<int>::iterator it;
- for(it = s.begin(); it != s.end(); it ++){
- cout<<*it<<endl;
- }
7.multiset
允许重复插入,用法和set相同。
8.map
map是一个键值和一个映照数据组成,用红黑树实现,插入不重复。
定义:map<string, int> m;
插入:m["one"] = 1;
m["two"] = 2;
查找:用迭代器和find()函数
- map<string, int>::iterator it;
- it = m.find("one");
遍历:用迭代器
- map<string, int>::iterator it;
- for(it = m.begin(); it != m.end(); it ++){
- cout<<(*it).first<<":"<<(*it).second<<endl;
- }
9.multimap
允许重复插入,用法和map相同。