vector queue deque unordered_set unordered_map list priority_queue

vector(int nSize,const t& t):创建一个vector,元素个数为nSize,且值均为t

void push_back(const T& x):向量尾部增加一个元素X

iterator insert(iterator it,const T& x):向量中迭代器指向元素前增加一个元素x

ret.insert(ret.begin(), head->val);头插

tmp.clear();

sort(vec.begin(),vec.end());

back

pop_back

 

queue<TreeNode*> que;

que.push(pRoot);

que.empty()

que.front()

que.pop();

que.size()

 

双端队列:

deque<int> q

q.pop_front()//在队首删除

q.pop_back();//在队尾删除

q.push_back(i);//在队尾插入

q.front()//队首元素

q.back()//队尾元素

 

string

string ret;

ret.reserve(size);

s.substr(start, len)

int a;

string res = to_string(a);

char *c = "abc";

string str(c);(可以使用C风格字符串初始化string)


        stringstream ss(data);
        string str;
        ss >> str;以空格为分隔符


unordered_set

vector<string> deadends;

unordered_set<string> deadset(deadends.begin(),deadends.end());

deadset.count(cur)  (bool)

unordered_set<string>visited;

visited.insert(up);

visited.insert("0000");


unordered_map 就是哈希表(字典),它的一个方法 count(key) 相当于 Java 的 containsKey(key) 可以判断键 key 是否存在。

可以使用方括号访问键对应的值 map[key]。需要注意的是,如果该 key 不存在,C++ 会自动创建这个 key,并把 map[key] 赋值为 0。

// 删除哈希表中对应的项
cache.erase(removed->key);  // 根据key在哈希表中删除元素

unordered_map<int, list<Node>::iterator> key_table;

auto it = key_table.find(key); 根据key在map中找到的是迭代器

list<Node>::iterator node = it -> second; second是value,first是key


list是双向链表

unordered_map<int, list<Node>> freq_table;

list<Node>::iterator node = it -> second;

freq_table[freq].erase(node); // 删除迭代器所指定的元素

push_front

back

pop_back


priority_queue

#include <queue>

priority_queue<int> big;    // 大顶堆
priority_queue<int, vector<int>, greater<int> > small;  // 小顶堆
之后就可以对其使用队列的操作,比如push和pop. top size

leetcode 355. 设计推特 优先队列的元素为自定义的对象(指针)

        auto cmp = [&](const auto* a, const auto* b) {
            return a->time < b->time;
        };
        priority_queue<Tweet*, vector<Tweet*>, decltype(cmp)> q(cmp);  // 大顶堆


C++ split

#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
void split(const string& s,vector<int>& sv,const char flag = ' ') {
    sv.clear();
    stringstream ss(s);
    string temp;

    while (getline(ss, temp, flag)) {
        sv.push_back(stoi(temp));
    }
    return;
}

int main() {
    string s("123:456:7");
    vector<int> sv;
    split(s, sv, ':');
	int sz = sv.size();
	for (int i = 0; i < sz; ++i) {
		cout << sv[i] << endl;
	}
    
    system("pause");
    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STL(Standard Template Library)是C++标准库中的一个重要组成部分,提供了一系列的容器类,用于存储和管理数据。以下是STL中常用的容器类头文件的介绍: 1. vector(向量):vector是一个动态数组,可以在尾部快速插入和删除元素。它的头文件是<vector>。 2. list(链表):list是一个双向链表,可以在任意位置插入和删除元素。它的头文件是<list>。 3. deque(双端队列):deque是一个双端队列,可以在头部和尾部快速插入和删除元素。它的头文件是<deque>。 4. stack(栈):stack是一个后进先出(LIFO)的容器,只能在栈顶进行插入和删除操作。它的头文件是<stack>。 5. queue(队列):queue是一个先进先出(FIFO)的容器,只能在队尾插入,在队头删除元素。它的头文件是<queue>。 6. priority_queue(优先队列):priority_queue是一个按照优先级排序的队列,可以快速访问最大或最小元素。它的头文件是<queue>。 7. set(集合):set是一个有序且不重复的集合,可以进行插入、删除和查找操作。它的头文件是<set>。 8. map(映射):map是一个键值对的集合,可以根据键进行插入、删除和查找操作。它的头文件是<map>。 9. unordered_set(无序集合):unordered_set是一个无序且不重复的集合,可以进行插入、删除和查找操作。它的头文件是<unordered_set>。 10. unordered_map(无序映射):unordered_map是一个无序的键值对集合,可以根据键进行插入、删除和查找操作。它的头文件是<unordered_map>。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值