一.容器适配器
1.stack
需要引入的头文件:
#include<stack>
初始化方式:
stack<int> stk;
成员函数介绍:
stk.empty(); //判断stack是否为空,为空返回true,否则返回false
stk.size(); //判断stack中元素的个数
stk.pop(); //删除栈顶元素,但不返回其值
stk.top(); //返回栈顶元素的值,但不删除此元素
stk.push(item) //在栈顶压入新元素item
2.queue
需要引入的头文件:
#include<queue>;
初始化方式:
queue<int> q;
成员函数介绍:
q.empty(); //判断队列是否为空
q.size(); //返回队列长度
q.push(item); //对于queue,在队尾压入一个新元素
//对于priority_queue,在基于优先级的适当位置插入新元素
q.front(); //返回队首元素的值,但不删除该元素
q.back(); //返回队尾元素的值,但不删除该元素
q.top(); //返回具有最高优先级的元素值,但不删除该元素
二、常用容器用法介绍
1.vector
需要引入的头文件:
#include<vector>
using namespace std;
初始化方式:
vector<int>obj;
成员函数介绍:
push_back 在数组的最后添加一个数据
pop_back 去掉数组的最后一个数据
at 得到编号的位置数据
begin 得到数组头的指针
end 得到数组的最后一个单元+1的指针
front 得到数组头的引用
back 得到数组的最后一个单元的引用
max_size 得到数组最大可以是多大
capacity 当前数组分配的大小
size 当前使用数据的大小
resize 改变当前使用数据的大小
reserve 改变当前vector所分配空间的大小
erase 删除指针指向的数据项
clear 清空当前的vector
rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)
rend 将vector反转构的结束指针返回(其实就是原来的begin-1)
empty 判断vector是否为空
swap 与另一个vector交换数据
实际上vector是一个动态数组,这样就无需在使用前声明数组的大小,在使用中动态分配。
二维数组的定义:
int N=5, M=6;
vector<vector<int> > obj(N); //定义二维动态数组大小5行
for(int i =0; i< obj.size(); i++)//动态二维数组为5行6列,值全为0
{
obj[i].resize(M);
}
2.deque
所谓的deque是”double ended queue”的缩写,双端队列不论在尾部或头部插入元素,都十分迅速。而在中间插入元素则会比较费时,因为必须移动中间其他的元素。双端队列是一种随机访问的数据类型,提供了在序列两端快速插入和删除操作的功能,它可以在需要的时候改变自身大小,完成了标准的C++数据结构中队列的所有功能。
需要引入的头文件:
#include<deque>
初始化方式:
deque<int> deq;
成员函数介绍:
deq[ ]:用来访问双向队列中单个的元素。
deq.front():返回第一个元素的引用。
deq.back():返回最后一个元素的引用。
deq.push_front(x):把元素x插入到双向队列的头部。
deq.pop_front():弹出双向队列的第一个元素。
deq.push_back(x):把元素x插入到双向队列的尾部。
deq.pop_back():弹出双向队列的最后一个元素。
3.list
需要引入的头文件:
#include <list>
初始化方式:
list<int>lst1; //创建空list
list<int> lst2(5); //创建含有5个元素的list
list<int>lst3(3,2); //创建含有3个元素的list
list<int>lst4(lst2); //使用lst2初始化lst4
list<int>lst5(lst2.begin(),lst2.end()); //同lst4
成员函数介绍:
l.assign() 给list赋值
l.back() 返回最后一个元素
l.begin() 返回指向第一个元素的迭代器
l.clear() 删除所有元素
l.empty() 判断list是否为空
l.end() 返回末尾的迭代器
l.erase() 删除一个元素
l.front() 返回第一个元素
l.insert() 插入一个元素到list中
l.max_size() 返回list能容纳的最大元素数量
l.merge() 合并两个list
l.pop_back() 删除最后一个元素
l.pop_front() 删除第一个元素
l.push_back() 在list的末尾添加一个元素
l.push_front() 在list的头部添加一个元素
l.resize() 改变list的大小
l.reverse() 把list的元素倒转
l.size() 返回list中的元素个数
l.sort() 给list排序
l.splice() 合并两个list
l.swap() 交换两个list
l.unique() 删除list中相邻重复的元素
3.map
需要引入的头文件:
#include<map>
初始化方式:
map<int,string> ID_Name;
map<int, string> ID_Name = {
{ 2015, "Jim" },
{ 2016, "Tom" },
{ 2017, "Bob" } };
成员函数介绍:
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的函数
4.set
1. begin()--返回指向第一个元素的迭代器
2. clear()--清除所有元素
3. count()--返回某个值元素的个数
4. empty()--如果集合为空,返回true
5. end()--返回指向最后一个元素的迭代器
6. equal_range()--返回集合中与给定值相等的上下限的两个迭代器
7. erase()--删除集合中的元素
8. find()--返回一个指向被查找到元素的迭代器
9. get_allocator()--返回集合的分配器
10. insert()--在集合中插入元素
11. lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器
12. key_comp()--返回一个用于元素间值比较的函数
13. max_size()--返回集合能容纳的元素的最大限值
14. rbegin()--返回指向集合中最后一个元素的反向迭代器
15. rend()--返回指向集合中第一个元素的反向迭代器
16. size()--集合中元素的数目
17. swap()--交换两个集合变量
18. upper_bound()--返回大于某个值元素的迭代器
19. value_comp()--返回一个用于比较元素间的值的函数
原文链接: https://www.cnblogs.com/hj-SAMA/p/12304070.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/193073
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!