C ++成对排列2个数组

时间:2018-08-18 16:40:23

标签: c++ sorting

我有2个std :: vectors,一个浮点数,一个整数: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中,从而使排序比较器超载。有更懒惰的方法吗?

2 个答案:

答案 0 :(得分:2)

C ++标准库方便地提供了std::pair<TFirst,TSecond>模板,该模板正好具有您要查找的比较运算符,即,对pair::first进行排序,使用pair::second来解决联系:

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));

对数据进行排序后,您可以将结果收集到原始向量中。

答案 1 :(得分:1)

  

还有更懒惰的方式吗?

我认为不是。

我愿意使用std::pair而不是元组。