- vector
vector动态数组 .back()返回数组最后一个元素。
- vector之二维数组
声明:vector<vector<int>> res(M, vector<int>(N, 0));
上面的一行声明了一个二维数组M行N列的二维数组,并且初始化为0;
有一个交换的函数reserve(res.begin(), res.end()); //将res行交换 第一行变最后 第二行变倒数第二
- stack
stack堆栈,没有迭代器,支持push()方法。后进先出,top()返回最顶端的元素,pop()剔除最顶元素
- deque
deque双端队列,支持迭代器,有push_back()方法,跟vector差不多,比vector多了个pop_front,push_front方法
queue队列,先进先出,不支持迭代器,有push()方法,pop()剔除第一个元素,front()返回第一个元素
- set
set集合,元素是唯一的,默认情况下会对元素自动进行升序排列,支持集合的交(set_intersection),差(set_difference) 并(set_union),对称差 (set_symmetric_difference) 等一些集合上的操作。因为元素是唯一的,可用来判断,一个数组中是否含有重复元素。
初始化:
const int N = 6;
const char* a[N] = {"isomer", "ephemeral", "prosaic", "nugatory", "artichoke", "serif"};
const char* b[N] = {"flat", "this", "artichoke", "frigate", "prosaic", "isomer"};
set<const char*,ltstr> A(a, a + N);
set<const char*,ltstr> B(b, b + N);
或者 直接insert。
- map
1. 声明:map<int, int> m;
2. 初始化的时候,统计每个int出现的次数,若含有该key则++,若不含有则新加一个key;
for(int i=0; i<nums.size(); i++)
m[nums[i]]++;
3. 排序(按key或者按value排序):
typedef pair<int, int> PAIR;
struct CmpByValue {
bool operator()(const PAIR& lhs, const PAIR& rhs) {
return lhs.second > rhs.second;
}
};
vector<PAIR> v(m.begin(), m.end());
sort(v.begin(), v.end(), CmpByValue());
4. 排序之后,输出前K个key:
int index = 0;
while(k--)
res.push_back(v[index++].first);