一、stack
先进后出
1.构造
stack stk;
//stack采用模板类实现, stack对象的默认构造形式stack(const stack &stk);
//拷贝构造函数
2,存取
stack& operator=(const stack &stk);
//重载等号操作符push(elem);
//向栈顶添加元素pop();
//从栈顶移除第一个元素top();
//返回栈顶元素
3.大小
empty();
//判断堆栈是否为空size();
//返回栈的大小
二、queue
1.构造&赋值&存取&大小
同stack
不同:
back();
//返回最后一个元素front();
//返回第一个元素
三、list
STL中是双向循环列表
1.构造&赋值&交换&大小&数据存取
大同小异
注意:不可用[]或者at访问数据,原因:存储空间不连续
2.插入&删除&反转
- push_back(elem);//在容器尾部加入一个元素
- pop_back();//删除容器中最后一个元素
- push_front(elem);//在容器开头插入一个元素
- pop_front();//从容器开头移除第一个元素
- insert(pos,elem);//在pos位置插elem元素的拷贝,返回新数据的位置。
- insert(pos,n,elem);//在pos位置插入n个elem数据,无返回值。
- insert(pos,beg,end);//在pos位置插入[beg,end)区间的数据,无返回值。
- clear();//移除容器的所有数据
- erase(beg,end);//删除[beg,end)区间的数据,返回下一个数据的位置。
- erase(pos);//删除pos位置的数据,返回下一个数据的位置。
- remove(elem);//删除容器中所有与elem值匹配的元素。
reverse();
//反转链表
四、set/multiset
元素insert时会被自动排序
set和multiset区别:
- set不允许容器中有重复的元素
- multiset允许容器中有重复的元素
- set插入数据的同时会返回插入结果,表示插入是否成功
1.查找&统计
find(key);
//查找key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end();count(key);
//统计key的元素个数,只有0或1
对组:
- 成对出现的数据,利用对组可以返回两个数据
两种创建方式:
pair p ( value1, value2 );
pair p = make_pair( value1, value2 );
五、map/multimap
- map中所有元素都是pair
- pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)
- 所有元素都会根据元素的键值自动排序
1.查找&统计
find(key);
//查找key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end();count(key);
//统计key的元素个数