STL使用参考
字符串操作:
https://www.cnblogs.com/c1299401227/p/5370685.html
stringstream ss;
ss << val;
string s;
ss >>s;
map使用:
hash_map
https://blog.youkuaiyun.com/yousss/article/details/79541543?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
声明map,并指定降序排列
map<char, int, less> cMap;
multimap 容器保存的是有序的键/值对,但它可以保存重复的元素。
按value进行排序:
static bool value_compare(const pair<char, int>& p1, const pair<char, int>& p2)
{
return p1.second > p2.second;
}
vector<pair<char, int>> cvec(cMap.begin(), cMap.end());
sort(cvec.begin(), cvec.end(), value_compare);
//cout<<cvec[0].first<<cvec[0].second<<endl;
queue使用:
头文件是#include
http://c.biancheng.net/view/479.html
priority_queue的用法
priority_queue本质是一个堆。 https://www.cnblogs.com/Deribs4/p/5657746.html
关于priority_queue中元素的比较
模板申明带3个参数:priority_queue<Type, Container, Functional>,其中Type 为数据类型,Container为保存数据的容器,Functional 为元素比较方式。
priority_queue默认为大顶堆,即堆顶元素为堆中最大元素。如果我们想要用小顶堆的话需要增加使用两个参数:
priority_queue<int, vector, greater > q; // 小顶堆
priority_queue<int, vector, less > q; // 大顶堆
优先队列就是大顶堆(降序): 顶上top是最大的,所以叫大顶堆
priority_queue q;
先按照pair的first元素降序,first元素相等时,再按照second元素降序:
priority_queue<pair<int,int> > coll;
STL里面定义了一个仿函数greater<>,基本类型可以用这个仿函数声明小顶堆。
以下代码返回一个升序输出:
priority_queue<int, vector, greater > q;
for( int i= 0; i< 10; ++i ) q.push(10-i);
operator()😕/此处对()进行了重载
并查集:
class UnionSet {
public:
vector parent;
UnionSet(int n) {
for (int i = 0; i < n; ++i) {
parent.push_back(i);
}
}
int find(int num) {
if (parent[x] != x) parent[x] = find(parent[x]);
return parent[x];
}
void merge(int x, int y) {
int a = find(x);
int b = find(y);
parent[a] = b;
}
int count() {
int sum = 0;
for (int i = 0; i < parent.size(); ++i) {
if (parent[i] == i) {
sum++;
}
}
return sum;
}
};