これが私の質問です。私はdoubleのベクトルを持っており、特定の条件下でそれらのいくつかを排除する必要があります。コード例は次のとおりです。
vector <double> appo;
for(int i=0;i<appo.size();i++){
for(int j=i+1;j<appo.size();j++){
if( condition(appo[i],appo[j]) ){
appo.erase(appo.begin()+j);
j--;
}
}
}
destroy()の後、私のサイズは1減少し、すべての要素が左にシフトされたので、jを減少させるのは正しいですか?
さて、removeifは小さなプログラムであり、現在はパフォーマンスを気にしないため、使用しないことにしましたが、セグメンテーション違反が発生しました。コードは次のとおりです。
vector <double> *point;
for(int i=0;i<point->size();i+=3){
for(int j=i+3;j<point->size();j+=3){
if(distance((*point)[i],(*point)[i+1],(*point)[i+2],(*point)[j],(*point)[j+1],(*point)[j+2]) < treshold){
point->erase(point->begin()+j,point->begin()+j*3);
j-=3;
}
}
}
ポイントは座標のベクトルなので、(x1、y1、z1、x2、y2、z3、...、xn、yn、zn)のようになります。何か案が?