使用自己的结构对向量进行排序
Sort Vector with own Struct
我有我自己的类型结构的向量:
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
为什么前三个现在填充为零?
Werte_rechts.push_back(Absatz_rechts());
这将附加一个值构造的对象,其字段均为零。
排序后,这将是第一个元素,因此当您迭代矢量以打印它时,它将首先出现。由于您只打印第一个Gruppen.size()
,并且总大小(包括您附加的零值大小)为 Gruppen.size()+1
,因此您看不到最后一个元素。
相关文章:
- 计算排序向量的向量中唯一值的计数
- 查找两个排序向量中共有的元素
- 对的排序向量 (std::vector<pair<int, int>>) 按对的第一个元素搜索并更新第二个元素值
- 如何从C++的对的排序向量中获取有关给定值的相应对
- 对象接收堆栈溢出异常 c++ 的排序向量
- "x"的所有元素都存在于"y"(排序向量)中吗?
- 指向指针排序向量的指针向量的 C++ 向量
- 未排序向量上的lower_bound/upper_bound
- 智能指针的排序向量:神秘崩溃
- 按类型排序向量并按类型或派生类型搜索
- 如何在不使用标准算法的情况下在排序向量中添加 c 元素?
- C++排序向量<double>与在<Object>双成员变量上键控的向量
- 字符串指针的排序向量
- 具有前导数字的字符串的排序向量
- 保证重新排序向量
- 结构解释的C 排序向量
- 更新排序向量的一个条目
- 通过在排序向量上使用二叉搜索来定位未排序向量中的元素
- 排序向量上 std::find_if 和 std::bind2nd 的替代品
- 使用QuickSort算法以降序排序向量