<分区>
我有一个 vector ,它的元素由两个整数组成。我想先为每个元素计算这 2 个整数的比率,然后根据这个比率对 vector 进行降序排序。
<分区>
我有一个 vector ,它的元素由两个整数组成。我想先为每个元素计算这 2 个整数的比率,然后根据这个比率对 vector 进行降序排序。
最佳答案
看看std::sort
.该函数允许您使用您自己指定的谓词对集合进行排序。在下面的示例代码中,我创建了一个 pair
的 vector
。 cmp
函数通过计算每个对的比率并在 a
的比率大于 b 时返回
的。true
来比较这些对中的两个
如此有效,您需要指定一个函数(或函数对象,或 lambda 或其他),它接受您的集合元素类型的两个参数并比较它们。如果 a
应该出现在 b
之前,那么该函数应该返回 true
,如果不是,那么它应该返回 false
.该函数是 std::sort
#include <algorithm>
#include <vector>
bool cmp(const std::pair<int, int>& a, const std::pair<int, int>& b)
{
// you should probably also add some code to prevent dividing by zero...
return (static_cast<double>(a.first)/a.second) > (static_cast<double>(b.first)/b.second);
}
int main()
{
std::vector<std::pair<int, int> > pairs;
std::sort(pairs.begin(), pairs.end(), &cmp);
}
关于c++ - 如何根据值的比率在C++中对 vector 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22500861/