STL容器用法(Leetcode刷题心得)

一.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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值