我有一个关于对一个pair类型的vector进行排序的问题:
std::vector<std::pair<double,Processor*>> baryProc;
这个向量已经被填充满了键值对。
现在我想要根据键值对中的double值对向量中的键值对进行排序。
例如:假设向量中有3个键值对,pair1在最前面,pair3在最后面,pair2在中间:
pair1(1, proc1)
pair2(3, proc2)
pair3(2.5, proc3)
现在我想根据双精度值对这些配对进行排序,以便向量内部的顺序如下:
pair1(1, proc1)
pair3(2.5, proc3)
pair2(3, proc2)
我该怎么做呢?我很困惑。
double
值唯一(实际上是“集合”),那么这个方法 将 起作用。但如果没有这样的保证(必要时强制执行),则需要编写比较器。对于pair
,默认比较器通常执行return (a.first < b.first || (a.first == b.first && a.second < b.second);
后者是指针比较,将在first
的非唯一值处导致问题。 - WhozCraig