gpt4 book ai didi

c++ - 如何对 vector 或 deque KeyPair 进行排序

转载 作者:行者123 更新时间:2023-11-30 04:19:44 27 4
gpt4 key购买 nike

我有一个 deque <pair<int, int> > r; .我需要按第二个参数对所有内容进行排序,并返回一个 deque<int>首先是所有参数。例如:

deque<pair<int, int> > r;
r.push_back(make_pair(1, 5));
r.push_back(make_pair(0, 8));
r.push_back(make_pair(7, 3));
r.push_back(make_pair(2, 1));

我需要这个结果

{2, 7, 1, 0}

我有一个“蛮力”所有值都为 N2 的工作方法,但它非常糟糕。也许存在这个 std:: ?我希望你能帮助我。

最佳答案

你只需要定义一个比较运算符来处理你的对中的第二个项目:

std::sort(r.begin(), r.end(), 
[](std::pair<int, int> const &a, std::pair<int, int> const &b) {
return a.second < b.second;
}
);

...或者,如果您不能使用 lambda(例如,使用太旧的编译器),您可以显式定义仿函数:

template <class T>
struct by_second {
bool operator()(T const &a, T const &b) {
return a.second < b.second;
}
};

std::sort(r.begin(), r.end(), by_second());

从那里开始,就是获取每对中的第一项并将其放入结果中:

std::transform(r.begin(), r.end(), std::back_inserter(result),
[](std::pair<int, int> const &p) { return p.first; });

关于c++ - 如何对 vector 或 deque KeyPair 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15666305/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com