c++ - 对成对的 vector 进行排序

标签 c++ sorting vector std-pair

我有一个关于排序 vector 对的问题:

std::vector<std::pair<double,Processor*>> baryProc;

这个 vector 已经被这些对填满了。 现在我想根据对中的 double 值对 vector 中的对进行排序

示例:

假设我在 vector 中有 3 对。 pair1 在前面,pair 3 在末尾。 pair2 在中间:

pair1(1, proc1) 
pair2(3, proc2)
pair3(2.5, proc3)

现在我想根据 double 值对配对进行排序。所以 vector 内的顺序是:

pair1(1, proc1) 
pair3(2.5, proc3)
pair2(3, proc2)

我怎么能这样做?我被卡住了。

最佳答案

#include <algorithm>

int main(){

    std::vector<std::pair<double,Processor*>> baryProc;

    std::sort(baryProc.begin(),baryProc.end());
}

请注意,您不需要自定义比较器,因为 pair 的默认比较器可以满足您的需求。它首先比较第一个元素,如果它们相同,则比较该对中的第二个元素。

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

相关文章:

c++ - 错误 : ambiguous default type conversion (c++)

c++ - 在cuda中使用邻接表分配图形?

algorithm - 通过算法计算全局 Tab 键顺序?

iphone - 按字母顺序排列数组

c++ - 如何将 vector 与集合元素一起使用?

C++最简单的键盘输入

c++ - C++ 中的命名枚举

javascript - 查找数组中重复的对象值并将它们合并 - JAVASCRIPT

c++ - std::vector 作为 MPI 非阻塞函数的输入缓冲区

c++ - 如何在排序的 vector 上正确应用 erase remove idiom?