map
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #include<map>
map<int, string> stu; map<int, string>::iterator it;
stu[123] = "student_first"; stu[456] = "student_second";
for(it=stu.begin();it!=stu.end();it++){ cout<<it->first; cout<<it->second; }
|
set
set即数学上的集合——每个元素最多只出现一次。
1.头文件
2.常用操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| set<int> s s.size()
s.clear() s.count() s.empty()
s.begin() s.end()
s.erase() s.find() s.insert()
s.swap()
s.lower_bound(要查找的数值) s.upper_bound(要查找的数值)
|
3.例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| #include <iostream> #include <set> using namespace std;
set<int> s; set<int>::iterator it;
int main() { for(int i=0; i<10; i++){ s.insert(i); } for(it=s.begin(); it!=s.end(); it++){ cout<<*it<<" "; } cout<<endl; s.erase(5); if(s.insert(3).second) cout<<"插入成功"<<endl; else cout<<"插入失败"<<endl;
for(it=s.begin(); it!=s.end(); it++) cout<<*it<<" "; s.clear(); return 0; }
|
vector
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #include<vector> vector<int> c;
c.pop_back(); c.push_back(elem);
c.front() c.back()
c.erase(pos) c.insert(pos,elem)
c.size() c.resize(num) c.clear() c.empty()
|
queue
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #include<queue> queue<int> q1; queue<double> q2;
q.push(x); q.pop();
q.front(); q.back();
q.size(); q.empty();
|
优先队列
介绍
优先队列有点像队列,但优先队列的出队元素,不是最先进队的元素,而是优先级最高的元素。(这样就可以允许类似“急诊病人插队”这样的事情发生。)
由于不是先进先出,所以出队的方法由front()
变为top()
。
自定义类型也可以组成优先队列,但必须为每个元素定义一个优先级(这个“优先级”只需要能比较大小即可)。
头文件
使用
1 2
| priority_queue<int> pq;
|