C++ 使用自己的结构对向量进行排序

C++ 使用自己的结构对向量进行排序,c++,vector,struct,C++,Vector,Struct,我有一个向量和我自己的结构类型: struct Absatz_rechts{ xint yniedrig; xint xhoch; xint xniedrig; }; vector<Absatz_rechts> Werte_rechts(Gruppen.size()); Werte_rechts.push_back(Absatz_rechts()); 现在使用以下命令进行排序: bool compName(const Absatz_rechts &

我有一个向量和我自己的结构类型:

struct Absatz_rechts{
    xint yniedrig;
    xint xhoch;
    xint xniedrig;
};

vector<Absatz_rechts> Werte_rechts(Gruppen.size());
Werte_rechts.push_back(Absatz_rechts());
现在使用以下命令进行排序:

bool compName(const Absatz_rechts &left, const Absatz_rechts &right)
{
    return (left.yniedrig < right.yniedrig);
}; 

sort(Werte_rechts.begin(), Werte_rechts.end(), compName);
为什么前三个现在都是零

Werte_rechts.push_back(Absatz_rechts());
这将附加一个值构造对象,其字段均为零


排序后,这将是第一个元素,因此当您遍历向量以打印它时,它将首先出现。由于您只打印第一个
Gruppen.size()
,并且总大小(包括您附加的零值大小)是
Gruppen.size()+1
,因此您看不到最后一个元素。

首先,因为您创建了一个向量go
Gruppen.size()
(这意味着它已经有那么多元素),然后你推了更多的元素进去。只需创建不带参数的向量:
vector Werte\u rechts,然后进行推送。并停止对(i=0;i
。只需在向量上使用迭代器
bool compName(const Absatz_rechts &left, const Absatz_rechts &right)
{
    return (left.yniedrig < right.yniedrig);
}; 

sort(Werte_rechts.begin(), Werte_rechts.end(), compName);
0
0
0

8
75
55

10
75
35
Werte_rechts.push_back(Absatz_rechts());