deque容器
初始化方式
deque a;
deque<const deque &wed>;
deque(n,elem)//n个elem初始化的deque
deque(beg,end)双指针初始化
V.push_front()取出第一个元素
stack容器
规则
栈,先进后出。通过top()方法返回栈顶元素,push()压栈,pop()出栈。效率很高,不能遍历,不支持随机存取。
queue容器
一些操作
q.front();q.back()队头,队尾。头相同,尾不同。其他操作大致与别的一样。
list容器
链表中的数据再内存中不是连续的。通过结点的指针来连接。
erase(pos):删除pos处的元素,返回pos+1处的元素。
erase(po1,po2):删除po1到po2(包含po1但不包含po2)的元素,返回po2处的元素。
remove(int n)移除链表中所有的n元素。
insert(egw,elem)在egw位置插入元素elem,返回新数据的位置(难道不是egw吗)
insert(egw,int wo,depw)在egw位置插入wo个depw元素,无返回值。
insert(egw,vbko,fsna)在egw位置插入指针vbko到fsna的位置,无返回值。
set容器
代表性操作
set< int >yge;
yge.find()一个参数,在yge中查找。若找到,返回那个值所在的位置;若没有找到,返回yge.end
所以函数可以这么写:
set::iterater ret = set.find(4);
if(ret == set.end)
{cout<< “没有找到”<<endl;}
else
{cout<<“ret:”<<*ret<<endl;}
插入
由于set容器自动排序,所以不需要指定位置。直接insert(传入的参数)即可。
当set容器的元素是类时
class gew()
{
public:
gew(int id,int age):id(id),age(age){}
int ang;int id;
};
set < gew > aa;
改变set容器的默认排序
class mycompared()
{
bool operator(gew &pl1,gew &pl2){
return gew.age1>gew.age2};
};
set< gew,mycompared>gn; gn容器按照gew类的对象中age大小(mycompared类中书写)顺序排列。
当容器中不是类时:
class mycompared2()
{
bool operator(int a,int b){
return a>b;
//return a<b;从小到大}
非常重要的查找
排序时如果时根据age进行排序,find()函数一定根据age进行查找。比如
set< gew,mycompared>gn ;
gew kk1(100,200),kk2(200,300),kk3(100,300);
gn.insert(kk1);
gn.insert(kk2);
gn.insert(kk3);
此时如果查找kk3,其实是查找gn中跟kk3的age一样的gew对象元素
set< gew >::iterator it = gn .find(kk3) ;
结果返回的迭代器可能指向为kk1,因为kk1和kk3的age是相等的。