我有一个包含对的向量,我想对它们进行排序是基于对之间的除法结果是决定性的排序因子。
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}
有办法吗?
答案 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
可能更适合这里