我有几个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 回答
炎炎设计
TA贡献1808条经验 获得超4个赞
您可能可以定义一个自定义的“外观”迭代器,该迭代器可以满足您的需求。它将迭代器存储到所有向量,或者从第一个向量的偏移量导出除第一个向量以外的所有向量的迭代器。棘手的部分是迭代器取消引用的内容:想像boost :: tuple之类的东西,并巧妙地使用boost :: tie。(如果您想扩展这个想法,可以使用模板递归地构建这些迭代器类型,但您可能永远不想写下它的类型-因此,您需要c ++ 0x auto或包装函数来进行取范围的排序)
- 4 回答
- 0 关注
- 1692 浏览
添加回答
举报
0/150
提交
取消