我有一个存储指针的容器.我试图根据指针指向的相应对象中的数据成员以非递增顺序对这些指针进行排序.就我而言,许多对象可能具有该数据成员的相同值.
以下是用于说明问题的简短代码.对sort函数的调用给出了Segmentation错误.关于这一点的奇怪之处在于,如果我在容器中有16个元素指向具有相同double值的对象,则排序似乎有效.但是如果我有17个元素指向具有相同值的对象,则会产生seg错误.
任何人都可以解释为什么会这样吗?
#include <iostream>
#include <algorithm>
#include <deque>
//some class
class A {
public:
double a;
A(double aval);
};
A::A(double aval) : a(aval) {}
//compare class
struct cmp_A : std::greater_equal<A*> {
bool operator() (const A* x, const A* y) const;
} cmp_A_obj;
//greater_equal comparison
bool cmp_A::operator() (const A* x, const A* y) const {
return (x->a >= y->a);
}
int main() {
std::deque<A*> Adeque;
//insert 17 A pointers into the container
for(int i = 1; i<=17; i++) {
Adeque.push_back(new …Run Code Online (Sandbox Code Playgroud)