容器是容纳特定类型对象的集合,因此容器里面的对象必须是同一类型,而且该类型必须是可拷贝构造和可赋值的,所以包括的类型有内置的基本数据类型和带有公用拷贝构造函数和赋值操作符的类。
关联容器:
提供一个Key(键)实现对元素的随机访问,其特点是key是有序的,及元素是按预定的键顺序(例如升序)插入的。关联容器具有从局域键的集合中快速提取对象的能力,其中集合的大小在运行时可变的。
STL中的关联容器有一下4种。
set(集合):支持唯一键值,并提供对键本身的快速检索;例如set:{学号}
multiset(多重集合):支持可重复键值,并提供对键本身的快速检索;
map支持唯一Key类型的键值,并提供另一个基于键值类型T的快速检索;例如map:{(学号,姓名)};
multimap(多重映射):支持可重复key类型的键值,并提供对另一个基于键的类型T的快速检索。
容器适配器:
提供原容器的一个专用的受限结构。特别是,容器适配器和普通容器的不一样是在于不提供迭代器。在STL中有3种容器适配器:
stack :只支持top()、push()和pop()操作的一种序列容器。
queue
priority_queue:也是一种队列queue,不过其中的每个元素都被给定了一个优先级,用来控制元素到达队首top()的顺序。
访问vector中数据有如下两种方法:
vector::at();
vector::operator[];
例:
vectorv;
v.reserver(10);
for(int i = 0; i < 7; i++)
{
v.push_back(i);
}try{
int iVal1 = v[7];
int iVal2 = v.at(7);
}catch(const exception& e){
cout<<e.what();
}