序列式容器
将一组具有相同类型的元素以严格的线性形式组织起来,每个元素都要固定的位置
向量(vector)
本质上是动态数组,随机存取任何元素都能在常数事件完成,在尾端增删性能高
cpp
#include <iostream>
#include <vector>
#include <string >
using namespace std;
int main()
{
vector<int> a; //创建一个向量存储容器 int
for(int i=0;i<10;++i)//push_back在数组最后添加十个数据
{
a.push_back(i);
cout <<a[i]<<" ";
}
for(int i=0;i<5;++i)
{
a.pop_back();//去掉数组最后5个数据
}
cout <<"\n"<<endl;
for(unsigned int i=0;i<a.sizel();++i)//size()容器中实际数据个数,打印数组内所有数据
{
cout <<a[i]<<" ";
}
return 0;
}
列表(List)
本质上是双向循环链表,在任何位置增删元素都能在常数时间完成,但随机访问偏慢
双端队列(deque)
本质是动态数组,随机存取任何元素都能在常数时间完成,性能仅次于vector,在2端增删元素具有较好性能
关联式容器
查找数据时具有非常好的性能,查找和检索的事件通常以平衡二叉树的方式实现
集合(set)与多重集合(multiset)
set容器内元素会被自动排序默认升序,无法使用迭代器去修改set元素,但可以插入或删除,set不允许数据重复,而multiset允许数据重复
映射(map)与多重映射(multimap)
map提供的是一种键值对容器,里面的数据都是成对出现的,每一对中的第一个值称为关键字key,每个关键字只能在map里面出现一次,第二个值成为该关键字的对应值
multimap与map唯一区别就是支持键值key重复,导致map支持\[\]运算符,而multimap不支持
cpp
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main()
{
map<int,string>students={{1,"zhangsan"},{2,"lisi"}};//初始化用{}赋值
students.insert(pair<int,string>(3,"wangwu"));//用insert函数插入pair数据
students.insert(map<int,string>::value_type(4,"laoliu"));//用insert函数插入value_type数据
map<int,string>::iterator iter;//使用迭代器遍历map;打印所有数据
for(iter =students.begin();iter !=students.end();++iter)
{
cout <<iter->first <<" "<<iter->second <<endl;
}
return 0;
}