当前位置:  开发笔记 > 编程语言 > 正文

选择性地排序矢量c ++

如何解决《选择性地排序矢量c++》经验,为你挑选了1个好方法。

我有以下向量:

vector 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存储为对的向量.



1> Jarod42..:

使用range-v3,您可以:

std::vector 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);

演示

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有