我有两个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,重载排序比较器。有没有更懒的方式来做这件事?
发布于 2018-08-19 00:44:11
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));一旦数据被排序,您就可以将结果收集到原始向量中。
发布于 2018-08-19 00:43:55
有没有更懒的方式来做这件事?
我不这么认为。
我会选择使用std::pair,而不是元组。
https://stackoverflow.com/questions/51910685
复制相似问题