C++ 错误C2893:未能专门化函数模板“未知类型std::less::运算符()(\u Ty1&,\u Ty2&&)const”

C++ 错误C2893:未能专门化函数模板“未知类型std::less::运算符()(\u Ty1&,\u Ty2&&)const”,c++,sorting,C++,Sorting,我写了一个函数,它将获取点的向量,点是一个结构,并将使用稳定排序对其进行排序,我得到以下错误: Error 1 error C2893: Failed to specialize function template 'unknown-type std::less<void>::operator ()(_Ty1 &&,_Ty2 &&) const' 并显示: out: 3 6 5 8 7 4 8

我写了一个函数,它将获取点的向量,点是一个结构,并将使用稳定排序对其进行排序,我得到以下错误:

    Error   1   error C2893: Failed to specialize function template 'unknown-type std::less<void>::operator ()(_Ty1 &&,_Ty2 &&) const'
并显示:

    out:
    3 6
    5 8
    7 4
    8 11 
    10 9
这是我的密码:

    #include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

struct points
{
    int a, b;

};

int main()
{

    int nbrDeLignes = 0;
    cin >> nbrDeLignes;

    vector<points> tab(nbrDeLignes);
    for (int i = 0; i < nbrDeLignes; i++)
    {
        points p;

        cin >> p.a >> p.b;
        tab.push_back(p);
    }

    //stable_sort(tab.begin(), tab.end());

    for (const points &point : tab)
    {
        cout << point.a << " " << point.b << endl;
    }

    return 0;
}
请帮忙

那么,您想如何排列您的积分?排序时,如何知道一个点是否应位于另一个点之前?你是按x坐标点的还是怎么点的?你需要告诉编译器这个

换句话说,您需要提供一个操作符那么,您希望如何对您的点进行排序?排序时,如何知道一个点是否应位于另一个点之前?你是按x坐标点的还是怎么点的?你需要告诉编译器这个


换句话说,您需要提供一个操作符stable\u sort不知道如何对结构进行排序,因为没有为它定义比较操作符。您需要将points设置为一个类并重写stable\u排序,因为没有为其定义比较运算符,所以它不知道如何对结构进行排序。你要么需要将点作为一个类,重写排序算法需要一个运算符,就是这样,发布为答案,这样我就可以给你投票:排序算法需要一个运算符,就是这样,发布为答案,以便我可以向上投票给您:实际上,您不必在类中设置点来覆盖“也可以设置您的比较”函数,以便将常量引用作为参数:bool compare_points const point&p1,const point&p2实际上,您不必将points设置为类,以便重写“也使您的比较”函数以将const引用作为参数:bool compare_points const point&p1、const point&p2
    #include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

struct points
{
    int a, b;

};

int main()
{

    int nbrDeLignes = 0;
    cin >> nbrDeLignes;

    vector<points> tab(nbrDeLignes);
    for (int i = 0; i < nbrDeLignes; i++)
    {
        points p;

        cin >> p.a >> p.b;
        tab.push_back(p);
    }

    //stable_sort(tab.begin(), tab.end());

    for (const points &point : tab)
    {
        cout << point.a << " " << point.b << endl;
    }

    return 0;
}
bool compare_points(point p1, point p2)
{
    return p1.a < p2.a;
}

stable_sort(tab.begin(), tab.end(), compare_points);