【发布时间】:2017-06-09 07:50:03
【问题描述】:
我有以下向量:
vector<unsigned> vec = {5, 6, 5, 4, 1, 3, 0, 4}
现在我想按字典顺序按奇数索引对这个向量进行排序(如果奇数索引相等,则按偶数索引)。这样排序后的向量“vec”就是:
{0, 4, 1, 3, 5, 4, 5, 6}
我知道 std::sort 将完全对“vec”进行排序。是否可以使用 std::sort 有选择地对向量进行排序。对于 std::lower_bound 也是如此。是否可以仅使用奇数索引找到 lower_bound。
我想要与对向量相同的效果。出于效率原因,我没有将 vec 存储为对的向量。
【问题讨论】:
-
不太清楚你想如何排序。比如原向量中的
6怎么了? -
据我了解,您需要一对向量,并对它们进行排序(并将向量展平)。
-
您可以编写自己的迭代器,这样当它递增时,它会返回下一个偶数索引;但就我个人而言,我怀疑尝试仅对集合中的偶数进行排序,意味着数据没有很好地表示
-
std::pair效率低怎么办? -
类型不仅用于保存数据,还用于表达您想要对这些数据执行的操作。如果你想对一个向量对进行排序,那么
vector<unsigned>是错误的类型