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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值