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