如何对二维向量进行排序

How to sort a 2d Vector

我有一个向量 L,其中包含每个向量有 2 个双精度值的向量。我想按第一个元素对 L 中的向量进行排序。

vector<vector<double>> L;

我尝试使用std::sort算法和自己写的比较函数如下:

    bool compare(const vector<double> &v1, const vector<double> &v2)
    {
        return v1[0] < v2[0];
    }

    void out_2d_vecotr_as_value_pairs(vector<vector<double>> &L)
    {
        L = sort(L.begin(), L.end(), compare);
            ...
    }

但是对于调用 sort() 函数的那一行,我遇到了这个错误:

projet.cc:234:38: error: no match for ‘operator=’ (operand types are ‘std::vector<std::vector<double> >’ and ‘void’)

感谢您的帮助

std::sort 没有 return 任何东西。向量就地排序。

替换

L = sort(L.begin(), L.end(), compare);

来自

sort(L.begin(), L.end(), compare);