我有以下 vector :
vector<unsigned> vec = {5, 6, 5, 4, 1, 3, 0, 4}
现在我想按奇数索引按字典顺序对这个 vector 进行排序(如果奇数索引相等,则按偶数索引)。这样排序的 vector “vec”是:
{0, 4, 1, 3, 5, 4, 5, 6}
我知道 std::sort 将完全对“vec”进行排序。是否可以使用 std::sort 有选择地对 vector 进行排序。对于 std::lower_bound 类似。是否可以仅使用奇数索引找到 lower_bound。
我想要和 vector 对一样的效果。出于效率原因,我没有将 vec 存储为对 vector 。
最佳答案
与 range-v3 ,你可以这样做:
std::vector<unsigned> vec = {5, 6, 5, 4, 1, 3, 0, 4};
auto pair_view = ranges::view::zip(vec | ranges::view::stride(2),
vec | ranges::view::drop(1) | ranges::view::stride(2));
ranges::sort(pair_view);
关于c++ - 有选择地排序 vector C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41829450/