c++ - 如何根据值的比率在C++中对 vector 进行排序

标签 c++ sorting stdvector

<分区>

我有一个 vector ,它的元素由两个整数组成。我想先为每个元素计算这 2 个整数的比率,然后根据这个比率对 vector 进行降序排序。

最佳答案

看看std::sort .该函数允许您使用您自己指定的谓词对集合进行排序。在下面的示例代码中,我创建了一个 pairvectorcmp 函数通过计算每个对的比率并在 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/

相关文章:

c++ - atoi 似乎不能正常工作

c++ - 在 Rcpp 中用(西类牙语)重音词对 map 进行排序

c++ - 为什么会出现运行时错误 : Vector erase iterator outside range

c++ - 大std::vector的加速创建

C++:如何将 std::vector 转换为 Eigen::MatrixXd?

c++ - 如何刷新 cin 缓冲区?

c++ - DirectWrite:Windows 7 上的字符间距

c++ - "multiple definition of ` 与 DLL 链接时 atexit '"

javascript - 带百分比的随机数

java - 随机化方法的问题