为了账号安全,请及时绑定邮箱和手机立即绑定

如何按其他std :: vector的值对std :: vector进行排序?

如何按其他std :: vector的值对std :: vector进行排序?

C++
眼眸繁星 2019-10-08 15:56:40
我有几个std::vector,长度都一样。我想对这些向量之一进行排序,并将相同的变换应用于所有其他向量。有一个整齐的方法吗?(最好使用STL或Boost)?一些载体的持有intS和他们中的一些std::string秒。伪代码:std::vector<int> Index = { 3, 1, 2 };std::vector<std::string> Values = { "Third", "First", "Second" };Transformation = sort(Index);Index is now { 1, 2, 3};... magic happens as Transformation is applied to Values ...Values are now { "First", "Second", "Third" };
查看完整描述

4 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

将值放入Boost Multi-Index容器中,然后进行迭代以按所需顺序读取值。如果需要,您甚至可以将它们复制到另一个向量。


查看完整回答
反对 回复 2019-10-08
?
炎炎设计

TA贡献1808条经验 获得超4个赞

您可能可以定义一个自定义的“外观”迭代器,该迭代器可以满足您的需求。它将迭代器存储到所有向量,或者从第一个向量的偏移量导出除第一个向量以外的所有向量的迭代器。棘手的部分是迭代器取消引用的内容:想像boost :: tuple之类的东西,并巧妙地使用boost :: tie。(如果您想扩展这个想法,可以使用模板递归地构建这些迭代器类型,但您可能永远不想写下它的类型-因此,您需要c ++ 0x auto或包装函数来进行取范围的排序)


查看完整回答
反对 回复 2019-10-08
  • 4 回答
  • 0 关注
  • 1692 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信