对向量int的向量进行排序

时间:2020-10-21 12:34:16

标签: c++ sorting vector

我有一个包含对的向量,我想对它们进行排序是基于对之间的除法结果是决定性的排序因子。

vector<vector<int>> = {{1,2},{1,3},{2,5}};

1/2 = 0.5和1/3 = 0.333和2/5 = 0.4,因此其排序方式如下:

{1,3},{2,5},{1,2}

有办法吗?

1 个答案:

答案 0 :(得分:3)

std::sort接受自定义谓词。因此,您可以在此处定义一个lambda进行比较:

std::vector<std::vector<int>> myvec = {{1,2},{1,3},{2,5}};
std::sort(myvec.begin(), myvec.end(), 
    [](const auto& v1, const auto& v2) { return (v1.at(0)*v2.at(1)) < v2.at(0)*v1.at(1); }
);

您必须确保所有内部向量都至少包含两个元素。 std::pair可能更适合这里