我有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中,从而使排序比较器超载。有更懒惰的方法吗?
答案 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)