정렬에 문제가 있습니다. 내가 동적 테이블을 포함하는 개체를 정렬합니다. stable_sort (또는 벡터)가 공용 복사본 생성자를 사용하지 않는 것 같습니다. 개체 안의 테이블이 해제되기 때문에 매개 변수가없는 존재하지 않는 생성자를 사용하는 것 같습니다.동적 테이블을 포함하는 개체의 stable_sort
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
class Dynamic{
int n;
int *tab;
public:
int getN() const{ return n;}
int *getTab() const {return tab;}
Dynamic(int ile){
n=ile;
tab=new int[n];
for(int i=0; i<n; i++)
tab[i] = (10-i)%10;
}
Dynamic(const Dynamic& d){
n = d.getN();
tab = new int[n];
for(int i=0; i<n; i++)
tab[i] = d.getTab()[i];
}
bool operator<(const Dynamic& a) const{
return n < a.getN();
}
~Dynamic(){
delete[] tab;
}
};
int test(vector<Dynamic> & c){
vector<Dynamic> d(c);
stable_sort(d.begin(), d.end());
d.clear();
}
int main(){
vector<Dynamic> c;
c.push_back(Dynamic(15));
test(c);
cout<<"test!";
return 0;
}
STL의 정렬도 약간 더 복잡한 방식으로 영향을받습니다. g ++에서 - 4.7.2 나는 이것을 컴파일 할 수 있고 "double free 또는 corruption (fasttop)"/ 코어가 덤프 됨 (전체 보고서가 도움이되지 않는다고 생각합니다). 온라인 g ++ - 4.9.0에서도 비슷한 모습입니다 : "출력 없음 : 오류 : stdout maxBuffer가 초과되었습니다.".
내 실수는 어디에서 왔습니까? 관심을 가져 주셔서 감사합니다.
세의 통치 특히 연산 = 좋은 조언을 – PlasmaHH
감사를 봐! – Mat