Vector
向量vector第一个元素下标为0;其可直接用== != <= >= > < 进行比较操作。
#include<vector>;
#include<iostream>
#include<algorithm>
vector<datatype> ve;//初始化
vector<datatype> ve(N);//初始化N个
vector<datatype> ve(N,m);//初始化N个,均为m
vector<datatype> ve(Ve);//用Ve初始化
vector<datatype> ve(Ve.begin()+i,Ve.begin()+j);
//用Ve的i到j-1个元素初始化(如0 3为0 1 2三个元素)
vector<datatype> ve(B,B+i);
//用数组的前i个元素初始化
ve.assign(Ve.begin()+i,Ve.begin()+j);//将Ve的从第i个到第j个元素给ve
ve.assign(N,M);//ve含N个M元素
ve[i];//使用下标访问
for(vector<Datatype>::itertor it=ve.begin();it!=ve.end();it++){}//使用迭代器访问
ve.clear();//清空
ve.empty();//是否为空
ve.size();//元素个数
ve.capacity();//容量
ve.push_back(Data);//尾部插入
ve.insert(ve.begin()+i,Data);//在第i个元素后插入
ve.insert(ve.begin()+i,N,M);//在第i个元素后插入N个M
//也可以插入数组中的一段元素
ve.pop_back();//删除最后一个元素
ve.erase(ve.begin()+i);//删除第i+1个元素
ve.erase(ve.begin()+i,ve.begin()+j);//删除ve从i到j-1个元素
ve.resize(N);//将现有元素调为N个,多删少补,值随机
ve.resize(N,M);//同上,值为M;
ve.reserve(N);//将容量扩至N
ve.swap(Ve);//将ve与Ve元素交换
sort(ve.begin(),ve.end());//升序排列
reverse(ve.begin(),ve.end());//倒置
copy(ve.begin(),ve.end(),Ve.begin()+i);//将ve复制到Ve,从第i个开始覆盖
find(ve.begin(),ve.end(),data);//查找ve中有没有data
Map
C++ map是一种关联式容器,包含“关键字/值”对;一对一关系,key对value;
#include<iostream>
#include<algorithm>
#include<map>
map<Type1,Type2> Ma={
{Data1,Data2},{Data3,Data4}
};//初始化,
//插入一组数据对
Ma.insert(pair<Type1,Type2>(data1,data2));
Ma.insert(map<Type1,Type2>::value_type(data1,data2));
Ma[value]=key;
//查找
iter =Ma.find(key1);//返回迭代器的位置,否则为Ma.end();
//删除和清空
iter=Ma.find(key); Ma.erase(iter); //迭代器删除
int n=Ma.erase(key); //关键字删除 '1' '0'
Ma.erase(Ma.begin(),Ma.end()); //等同于Ma.clear();
//常用操作函数
begin() //返回指向map头部的迭代器
clear() //删除所有元素
count() //返回指定元素出现的次数
empty() //如果map为空则返回true
end() //返回指向map末尾的迭代器
equal_range() //返回特殊条目的迭代器对
erase() //删除一个元素
find() //查找一个元素
get_allocator() //返回map的配置器
insert() //插入元素
key_comp() //返回比较元素key的函数
lower_bound() //返回键值>=给定元素的第一个位置
max_size() //返回可以容纳的最大元素个数
rbegin() //返回一个指向map尾部的逆向迭代器
rend() //返回一个指向map头部的逆向迭代器
size() //返回map中元素的个数
swap() //交换两个map
upper_bound() //返回键值>给定元素的第一个位置
value_comp() //返回比较元素value的函数
Queue(队列)
queue<Type> M//定义一个queue的变量
M.empty() //是的话返回1,不是返回0;查看是否为空范例
M.push() //从已有元素后面增加元素
M.size() //输出现有元素的个数
M.front() //显示第一个元素
M.back() //显示最后一个元素
M.pop() //清除第一个元素
Deque
双向队列
//构造函数
deque<Elem> c //创建一个空的deque
deque<Elem> c1(c2) //复制一个deque。
deque<Elem> c(n) //创建一个deque,含有n个数据,数据均已缺省构造产生。
deque<Elem> c(n, elem) //创建一个含有n个elem拷贝的deque。
deque<Elem> c(beg,end) //创建一个以[beg;end)区间的deque。
deque<Elem>() //销毁所有数据,释放内存。
c.push_back(num) //在末尾位置插入元素
c.pop_back() //删除末尾位置的元素
c.push_front(num) //在开头位置插入元素
c.pop_front() //删除开头位置的元素 List
c.insert(pos,num) //在pos位置插入元素num
c.insert(pos,n,num) //在pos位置插入n个元素num
c.insert(pos,beg,end) //在pos位置插入区间为[beg,end)的元素``
c.erase(pos) //删除pos位置的元素c.erase(beg,end)删除区间为[beg,end)的元素
c.erase(beg,end) //删除区间为[beg,end)之间的元素
c.begin() //返回指向第一个元素的迭代器
c.end() //返回指向最后一个元素下一个位置的迭代器
c.front() //返回c容器的第一个元素
c.back() //返回c容器的最后一个元素
c.rbegin() //返回指向反向队列的第一个元素的迭代器(即原队列的最后一个元素)
c.rend() //返回指向反向队列的最后一个元素的下一个位置(即原队列的第一个元素的前一个位置)``
c.clear() //清除c容器中拥有的所有元素
c.resize(num) //从新定义容器的大小
c.empty() //判断c容器是否为空
c.size() //返回c容器中实际拥有的元素个数
c.max_size() //返回c容器可能存放元素的最大数量
c.assign(n,num) //将n个num拷贝复制到容器c
c.assign(beg,end) //将[beg,end)区间的数据拷贝复制到容器c
c.at(pos) //返回索引为pos的位置的元素,会执行边界检查,如果越界抛出out_of_range异常
c.operator[] //下标运算符重载
c1.swap(c2)交换容器c1,c2;
swap(c1,c2)同上。
List
Set
begin() ,返回一个迭代器,返回的值为set容器的第一个元素
end() ,返回一个迭代器,返回的值为set容器的最后一个元素
clear() ,删除set容器中的所有的元素
empty() ,判断set容器是否为空
max_size() ,返回set容器可能包含的元素最大个数
size() ,返回当前set容器中的元素个数
rend() ,返回一个逆迭代器,它指向容器c的第一个元素前面的位置
count() 用来查找set中某个某个键值出现的次数。这个函数在set并不是很实用,因为一个键值在set只可能出现0或1次,这样就变成了判断某一键值是否在set出现过了。
erase(iterator) ,删除定位器iterator指向的值
erase(first,second) ,删除定位器first和second之间的值
erase(key_value) ,删除键值key_value的值
find() ,返回给定值的定位器,如果没找到则返回end()
insert(key_value); // 将key_value插入到set中 ,返回值是pair<set<int>::iterator,bool>,bool标志着插入是否成功,而iterator代表插入的位置,若key_value已经在set中,则iterator表示的key_value在set中的位置。
inset(first,second); //将定位器first到second之间的元素插入到set中,返回值是void.
lower_bound(key_value) //返回第一个大于等于key_value的定位器
upper_bound(key_value) //返回最后一个大于key_value的定位器