我的矢量有我自己的结构类型:
struct Absatz_rechts{
xint yniedrig;
xint xhoch;
xint xniedrig;
};
vector<Absatz_rechts> Werte_rechts(Gruppen.size());
Werte_rechts.push_back(Absatz_rechts());
现在我想对矢量进行排序
for (i = 0; i < Gruppen.size(); i++)
{
cout << Werte_rechts[i].yniedrig << endl;
cout << Werte_rechts[i].xhoch << endl;
cout << Werte_rechts[i].xniedrig << endl;
cout << endl << endl << endl;
}
发出:
10
75
35
12
35
0
8
75
55
现在排序:
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
为什么前三个现在填充零?
答案 0 :(得分:2)
Werte_rechts.push_back(Absatz_rechts());
这会附加一个值构造的对象,其字段都为零。
排序后,这将是第一个元素,因此当您遍历矢量以打印它时,它将首先出现。由于您只打印了第一个Gruppen.size()
,并且总大小(包括您附加的零值)是Gruppen.size()+1
,因此您不会看到最后一个元素。