容器
•顺序式容器:
vecto–>动态数组,从末尾快速插入删除,直接访问任何元素
list–>双链表,从任何地方快速插入删除
deque–>双向队列,从前面与后面快速插入删除,直接访问任何元素
priority_queue–>优先队列,最高优先级元素总是最先出列
stack–>栈,后进先出、先进后出
•关联式容器:
set–>集合,快速查找,不允许有重复值
multiset–>快速查找,允许有重复值
map–>一对一映射,基于关键字快速查找,不允许有重复值
multimap–>一对多映射,基于关键字快速查找,允许有重复值
1.Vector
定义:
定义int类型数组
Vector < int > a ;//默认初始化,a 为空
Vector < int > b ( a ) ; //用a定义b
Vector < int > a ( 100 ) ; //定义a有100个值为0的元素
Vector < int > a ( 100,x ) ;//定义a有100个值为x的元素
定义string类型数组
Vector < string > a ( 10,”null” ) ; //定义a有10个值为null的元素
Vector < string > arr ( 10,”hello” ) ; //定义a有10个值为hello的元素
Vector < string > b ( b (a.begin),a.end() ) ;// b是a的复制
定义结构型数组
Struct point { int x,y; } ;
Vector < point > a // a 用于存储坐标
定义多维数组:
vector < int >[110] ;//数组一维度是固定的110,而第二维是动态的
常用操作:
a.push_back(100);//在尾部添加元素
int size = a.size(); //元素个数
bool isEmpty = a.empty();//判断是否为空
cout << a [0];//输出首元素
a.insert(a.begin()+i,k);//中间插入,在第i个元素前插入k
a.push_back(x)//在尾部插入值为x的元素
a.insert(a.end(),n,x)//在尾部插入n个值为x的元素
a.pop_back();//删除末尾的元素
a.erase(a.begin()+i,a.begin()+j);//删除区间[i,j-1]的元素
a.erase(a.begin()+i);//删除第i-1个元素
a.resize(n);//调整数组大小为n
a.clear();//清空
reverse(a.begin(),a.end());//使用函数reverse()反转数组
sort(a.begin(),a.end());//使用函数sort()让数组从小到大排序