一.vector
1.简单数据
vector<int> arr;
arr.push_back();//容器末尾添加数据
arr.pop_back();//容器末尾删除数据
arr.back();//返回容器最后一个数据
arr.insert(arr.begin()+i,int val);//在数组i下标处插入一个数据val
arr.resize(size);//给容器重新分配空间
//push、insert方法都会拷贝数据
vector<int> crr;
crr.assign(arr.begin(),arr.end());//拷贝数组
arr.erase(arr.begin()+1);//删除容器中第二个元素
arr.erase(arr.begin(),arr.begin()+2);//删除容器中从第一个到第3个元素(不包括第三个元素)
arr.remove(a);//删除容器中与a相等值的所有元素
auto it=find(arr.begin(),arr.end(),x);//找的的话即为指向x的迭代器
int n=it-arr.begin();//得出x的下标
2.C11新增
vector<ListNode*> arr;
arr.emplace_bcak();//在尾部添加元素
arr.emplace_font();
//arr.emplace();//插入元素,第一个参数为位置
//不拷贝数据,会调用构造函数,效率更高
二.unordered_map<key,value>
1.unordered_map<key,value>map
1.map[key]=value
2.unordered_map<string,vector<string>>
3.遍历数组时
for(auto i:map)
{
i.first;//键
i.second;//键值
}
4.寻找map的指定键值
map.find(key);//返回key对应位置的迭代器或map.end();
auto it=map.find(key);
map.erase(it);//通过迭代器删除元素
2.unordered_set<key>
三.stack
stack.pop();//出栈(栈顶元素)
stack.push(a);//入栈
stack.empty();//是否为空
stack.top();//查看栈顶元素
四.queue
queue<int> ans;
ans.push(x);//从队尾压入
ans.pop();//从队列头部删除
ans.size();
ans.front();//返回队列头部的元素
ans.back();//返回队列尾部的元素
五.priority_queue
priority_queue<int>ans;//默认的自动排序(从大到小)-----
priority_queue<int,vector<int>,greater<>> ans;//从小到大排序
ans.push(x);//插入元素
ans.empty();
ans.pop();//删除第一个元素
ans.top();//返回第一个元素
//自定义比较函数
struct mycomparison {
bool operator()(const pair<int, int>& lhs, const pair<int, int>& rhs) {
return lhs.second > rhs.second;
}
};
priority_queue<pair<int, int>, vector<pair<int, int>>, mycomparison> pri_que;
六.deque 双端队列
七.set
set<int>crr;
crr.begin();//返回set容器的第一个元素
crr.end();
crr.clear();
crr.empty();
crr.max_size();//返回set容器可能包含的元素的最大个数
crr.size();//返回set容器内元素的个数
//以下两个迭代器相当与取反,并且移动方向也是相反
crr.rbegin();//返回指向set容器末尾的反向迭代器,即rbegin自增是往回走
crr.rend();//返回指向set容器开头的反向迭代器
八.List(双向链表容器)
#include<list>
list<int> values(10);//初始化元素个数
list<int> values2(10,5);//初始化元素个数并且以5进行填充
//拷贝容器
list<int>mids(values);
begin()、end()//迭代器
rbegin()、rend()//反向迭代器(有const属性,不能用于修改属性
九.容器的通用工具
1.accumulate(v.begin(),v.end(),0);//计算总和+0
2.sort(v.begin(),v.end());//排序(升序)
3.find(查找)
4.empty