0%

c++:STL

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对象
map<int, string>::iterator it; //定义相应的迭代器(用于遍历)
//插入元素:用"array"方式插入
stu[123] = "student_first";
stu[456] = "student_second";
//迭代
for(it=stu.begin();it!=stu.end();it++){
cout<<it->first; //first表示key
cout<<it->second; //second表示value
}
/*
map.count(Key)返回值为1或者0,1返回存在,0返回不存在。因为在map中数据的Key值都是不同的,所以被count的数要么存在1次,要么不存在。

begin()指向第一个元素
end()指向最后一个元素的后一个元素
*/

set

set即数学上的集合——每个元素最多只出现一次。

1.头文件

1
#include <set> 

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() //如果集合为空,返回true

s.begin() //返回指向第一个元素的迭代器
s.end() //返回指向最后一个元素之后的迭代器,不是最后一个元素

s.erase() //删除集合中的元素
s.find() //返回一个指向被查找到元素的迭代器,如果没找到则返回end()
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()
{
//插入10个元素
for(int i=0; i<10; i++){
s.insert(i);
}
//打印10个元素
for(it=s.begin(); it!=s.end(); it++){
cout<<*it<<" ";
}
cout<<endl;

s.erase(5);

if(s.insert(3).second)//把3插入到s中,插入成功则s.insert(3).second返回1,否则返回0.
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) // 删除pos位置的数据,传回下一个数据的位置。
c.insert(pos,elem) // 在pos位置插入一个elem拷贝,传回新数据位置。

c.size() // 返回容器中实际数据的个数。
c.resize(num) // 改变vector大小
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); //将x 接到队列的末端。
q.pop(); //弹出队列的第一个元素,注意,没有返回值!

q.front(); //即最早被压入队列的元素。
q.back(); //即最后被压入队列的元素。

q.size();
q.empty(); //当队列空时,返回true。

//若要取完队头元素后删之,需front()和pop()连用

优先队列

介绍

优先队列有点像队列,但优先队列的出队元素,不是最先进队的元素,而是优先级最高的元素。(这样就可以允许类似“急诊病人插队”这样的事情发生。)

由于不是先进先出,所以出队的方法由front()变为top()

自定义类型也可以组成优先队列,但必须为每个元素定义一个优先级(这个“优先级”只需要能比较大小即可)。

头文件

1
#include<queue>

使用

1
2
priority_queue<int> pq;		//越大的整数优先级越高



-------------------本文结束 感谢您的阅读-------------------