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
,因此您看不到最后一个元素。首先,因为您创建了一个向量goGruppen.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());