STL使用参考

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

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值