几种典型容器
-
Vector
- 与array类似,在内存中的表现形式为一段地址连续的空间,是一个能存放任意型别的动态数组,有自动扩容的功能。
#include<vector>
int main(){
std::vector v;
}
-
Deque
- 是能够存放任意型别的双向队列,使用大块分配内存的内存管理方法。
#include<deque>
int main(){
std::deque dq;
}
-
List
- 能够存放任意型别的双向链表。
#include<list>
int main(){
std::list l;
}
-
Stack
- 即数据结构中所学的Stack栈,先进后出,只有一个出口。
#include<stack>
int main(){
std::stack s;
}
-
Queue
- 队列,两个出口,前端增加新元素,后端移除已有元素。
#include<queue>
int main(){
std::queue q;
}
-
Map and Multimap
- Map是一种关联容器,存储对象为Key/Value pair,不允许有重复的Key 。map存储的对象必须是具备可排序性的,默认采取less定义排序行为,也可以通过仿函数自定义排序行为。
template<class _Kty,class _Ty,class _Pr=less<_Kty>,
class _Alloc=allocator<pair<const _Kty,_Ty>>>
class map{…}
#include<map>
int main(){
std::map<T1,T2,排序行为> q;
}
Multimap是类似于map的关联容器,允许Key重复。
std::multimap<int,Employee,ReverseId> mm(item,item+3);
mm.insert(std::make_pair(1,Employee(L"Peter")));
-
Set andMultiset
-
Set是一种关联容器,存储的对象本身既是Key又是Value,不允许有重复的Key , Set存储的对象必须是具备可排序性的。可以通过仿函数自定义排序行为,默认使用less定义排序行为(operator<)。
特别注意:①用作排序key的元素不允许进行改变。②set的实现方式不允许通过迭代器改变对象成员。