首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++成对排序2个数组

C++成对排序2个数组
EN

Stack Overflow用户
提问于 2018-08-19 00:40:23
回答 2查看 719关注 0票数 3

我有两个std::向量,一个浮点数,一个整数:A和B。

A = [5,3,1,2]

B = [0.1, 0.2, 0.3, 0.4]

我希望对A进行排序,并在B中保持相同的1-1。因此,结果应该如下所示:

A = [1,2,3,5]

B = [0.3, 0.4, 0.2, 0.1]

为了方便起见,我使用了python/js约定,但这些都是C++ std::vectors。我在考虑只做一个元组结构,并把它们打包成std:vector of tuple,重载排序比较器。有没有更懒的方式来做这件事?

EN

回答 2

Stack Overflow用户

发布于 2018-08-19 00:44:11

C++标准库方便地提供了std::pair<TFirst,TSecond>模板,它具有您正在寻找的比较运算符,即按pair::first排序,使用pair::second解决关系

代码语言:javascript
复制
std::vector<std::pair<int,double>> myVect;
// Replace this with a loop that iterates your vectors on the same index,
// and pushes back pairs from their elements into myVect:
myVect.push_back(std::make_pair(5, 0.1));
myVect.push_back(std::make_pair(3, 0.2));
myVect.push_back(std::make_pair(1, 0.3));
myVect.push_back(std::make_pair(2, 0.4));
std::sort(std::begin(myVect), std::end(myVect));

一旦数据被排序,您就可以将结果收集到原始向量中。

票数 2
EN

Stack Overflow用户

发布于 2018-08-19 00:43:55

有没有更懒的方式来做这件事?

我不这么认为。

我会选择使用std::pair,而不是元组。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51910685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档