c++ - 排序运算符在 C++ 中不起作用

标签 c++ sorting std-pair

我在使用排序运算符时遇到了问题,因为我只需要对对中的第一个元素进行排序。代码很简单但不起作用:

运算符定义于:

struct sort_pred {
    bool operator()(const CromosomaIndex &left, const CromosomaIndex &right) { 
        return left.first < right.first;
    }
};

类型是

typedef std::pair<double,int> CromosomaIndex;

我正在尝试像这样对数组进行排序:

CromosomaIndex nuevo[2];
nuevo[0].first = 0.01;
nuevo[0].second = 0;
nuevo[1].first = 0.009;
nuevo[1].second = 1;
int elements = sizeof(nuevo) / sizeof(nuevo[0]);
sort(nuevo, nuevo+ elements, sort_pred());

但问题是这是对第一个和第二个元素进行排序,而我只想对第一个元素进行排序并保持第二个元素不变。 有什么想法吗?

最佳答案

如果您希望结果取决于原始顺序,请使用 std::stable_sort .

关于c++ - 排序运算符在 C++ 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12127197/

相关文章:

c++ - 字段声明为 void/struct 或未在此范围内声明的变量

linux - 使用 du 的输出,如何在 bash 中显示对应于高于或低于给定大小的文件的行?

c++ - #include<utility> 在 dev c++ 头文件中

c++ - 为什么我需要在 map::emplace 中为不可复制对象的单个 arg 构造函数使用分段构造?

c++ - 对值读取错误 C++

c++ - 隐藏模板化辅助函数 - 静态成员或未命名的命名空间

c++ - 哪里应该使用ncurses刷新()?

按值对 map 内的 map 进行排序

c++ - 如何迭代 boost::property_tree 中的 XML 结构

java - Collections.sort() 没有按应有的方式排序