- map迭代元素除了迭代器还有什么方法?
名称 | 简介 |
---|---|
vector | 变长数组 |
map | 映射 |
stack | 栈 |
queue | 队列 |
priority_queue | 优先队列 |
vector
vector 定义:vector<typename> vi;
访问:既可以通过下标访问,也可以通过迭代器访问,之所以需要引入迭代器,一方面也是由于有些函数需要传入迭代器作为参数
具体以整型为例:
- 声明:
vector<int> a;
- vector初始化的时候希望内部有多个元素
int a[3] = {1,2,3}; vector<int> v(a, a+sizeof(a)/sizeof(a[0]));
- 迭代器声明:
vector<int>::iterator it;
- 迭代器初始化:
it = a.begin();
- 输出迭代器所指的元素
printf("%d",*it);
(a[i] 等价于 *(it.begin()+i))
常用方法:
push_back(int x)
pop_back()
size()
clear()
insert(iterator it, int x)
erase(iterator it)
erase(begin, end)
map
跟最简单的映射—数组相比,map扩展了数组的功能,因为数组只能实现int到其他类型的映射,而map可以实现任何类型映射到任何类型。
- map定义:
map<typename1, typename2> mp;
- map增加元素:
mp[key] = value;
- 迭代器定义:
map<typename1,typename2>::iterator it;
- 迭代器访问key:
it->first;
- 迭代器访问value:
it->second;
常用方法:
find(key);
erase();
erase(begin, end);
size();
clear()
priority_queue
优先队列,用堆实现队首元素总是当前队列中优先级最高的那个
#include<queue>
priority_queue<int> q;
priority_queue 只能访问队首元素:top()
,不能像queue一样访问队尾元素。
常用方法:
push()
top()
pop()
empty()
size()