【发布时间】:2012-08-26 02:31:24
【问题描述】:
我在使用排序运算符时遇到了问题,因为我只需要对对中的第一个元素进行排序。代码很简单,但不起作用:
运算符定义在:
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());
但问题是这是对第一个和第二个元素进行排序,我只想对第一个元素进行排序并保持第二个元素不变。 有什么想法吗?
【问题讨论】:
-
我给了你一个解决方案,让它们保持与
second最初出现的顺序相同。但我无法从你的问题中看出这是否是你真正想要的。您是否试图分开对并在排序后让它们以不同的方式关联?这真的很不寻常,并且表明它们可能一开始就不应该是同一个对象的成员。 -
我只需要对一个双精度数组进行排序,然后就可以恢复它们的原始索引。我正在尝试在stackoverflow.com/questions/1577475/… 中实现,但对我不起作用...谢谢回答
-
你的意思是它不工作?排序后,
nuevo[0]将成为{0.009,1}对,nuevo[1]将成为{0.01,0}。为什么这不是你想要的?