여기 내 질문입니다, 나는 두 배의 벡터를 가지고 있으며, 나는 그들 중 일부를 특정 조건 하에서 제거해야합니다. 다음 코드 예이다 : (1) 모든 요소들에 의해 제 사이즈 감소가 왼쪽으로 시프트 남았 소거 후 이후vector :: erase()가 위치를 변경합니까?
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--;
}
}
}
, J를 감소 맞습니까?
좋아요. 작은 프로그램이고 성능에 대해서는별로 신경 쓰지 않아요.하지만 segmentation 오류가있어서 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, 아연)과 같이 : 여기서 코드이다. 아이디어가 있으십니까?
삭제 된 모든 요소 *. 'std :: remove_if'는 많은 것들에 따라 더 효율적일 수 있습니다. –