leetcode 容器使用

1 容器使用

参考《C++ 基础教程 - 基础教程在线

1) vector

 

Vector相关操作增:void push_back(const T& x); vec.emplace_back(vector<int>{que.begain(),que.end}); //将队列的值都插入vector删:iterator erase(iterator first, iterator second);    iterator erase(iterator position);改:temp[i] = x; 下标操作即可查:#include <algorithm> ; vector<int>::iterator result = find(begin, end, value);  if(result != end) 代表找到了;找最大值: *max_element(begin(), end());求vector之和:accumulate(begin(), end(), val);  //求val + vector 元素之和, 当val = 0, 就是vector 之和。求vector某个值val出现的次数: count(begin(), end(), val);改变二维vector大小resize(n,vector<int>(m)); 

vector.pop_back();删除最后一个元素

vector<vector<int>> dp(n, vector<int>(m, 1);初始化n*m的dp表为1

2) list

list增: void push_front(const T& x); //头插    void push_back(const T& x); //尾插删: void pop_front();// 头部删除    void pop_back();// 尾部删除改:  xxxx查: front();//返回第一个元素的值    back(); //返回最后一个元素的值

3) unordered_map

定义:unordered_map<string, int> map增: insert(pair(key, value));  map[string] = int;//直接下标操作也可以增加<key,value>;改: tmp_map[key] = value; //下标操作查: 查: auto tmp = tmp_map.find(i); if (tmp != tmp_map.end() ) 代表找到了unordered_map.erase(val);删除val键值对; count(key) 计数;

 

4)队列

1 队列的定义: queue<TreeNode *> nodeQueue;//定义存放数据类型为TreeNode* 的队列;              deque<int> valueDeque;//定义存放数据类型为int的deque;2 增(入队):nodeQueue.push();valueDeque.push_back();//尾插  valueDeque.push_front();//头插3 删(出队):nodeQueue.pop(); valueDeque.pop_back();//尾出队  valueDeque.push_front();//头出队4 查: nodeQueue.front(); 返回队头元素5 判断队列是否为空: nodeQueue.empty();6 得到队列size: nodeQueue.size();             

5) 栈

栈定义:stack <int> Stack;入栈: Stack.push();访问栈头:Stack.top();出栈:StacK.pop();

6) string 

定义: string str;操作符:string str = str1 + str2 + to_string(int);字串: str.substr(pos, len); 长度:str.size();

7) priority_queue

priority_queue1 定义最大堆: priority_queue<int, vector<int>, less<int>>; // 最大堆先出大的值2 定义最小堆: priority_queue<int, vector<int>, greater<int>>;3 定义ListNode 最小堆:       struct Status {        int val;        ListNode* ptr;        bool operator < (const Status &rhs) const {            return val > rhs.val;        }     };    priority_queue<Status> pq; pq.push({val, node}); pq.top()      

8)unordered_set

unordered_set: 关联式容器,它与序列式容器相比存储的值都不是重复的。
增:emplace()/insert(); 删:erase()/clear(); 改:  ; 查:find()/count();

9) 优先级队列(二叉堆)

优先级队列(二叉堆):priority_queue
如何利用优先级队列保证值从小到大出队?
struct Status {
    int val;
    ListNode *ptr;
    bool operator < (const Status &rhs) const {
        return val > rhs.val;
    }
};
priority_queue<Status> q;
入队:q.push(); 取值:q.top(); 出队:q.pop()

10) map

map: 存储排序键值得容器, 增:insert(),[]下标操作; 删:erase(),clear(); 改:[]下标操作, 查:find();

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值