을 :: 표준에서 제거하고이 중복이 구조체에 qieid
에 의해 결정되는 경우 :분할 오류 벡터
struct infotable
{
int qieid;
int fid;
int valid;
};
그리고 나는이 작업을 수행 할 수있는 하위 기능을 쓰기 :
void erase_duplicate(vector<infotable> &info)
{
vector<infotable>::iterator it0,it1;
for(it0 = info.begin();it0 != info.end()-1; it0++)
{
//it1 = find(qieidarray1.begin(),it0,*it0);
for(it1 = it0 +1;it1 != info.end(); it1++)
{
if((*it1).qieid == (*it0).qieid)
it1 = info.erase(it1);
}
}
}
그러나이 코드 조각에는 몇 가지 문제점이 있습니다. 벡터의 구조체 수가 적 으면 잘 동작합니다. 내가 벡터에서 3000 개 이상의 구조체에 대해이 때, 프로그램이 잘못하고 내가 가진 :
(11) 내 화면에 보여
세그먼트 오류. 메모리 액세스 문제이므로 벡터에 너무 많은 요소가 있기 때문에 만지지 말아야하는 곳에 액세스 할 수 있습니다. 더 나은 성능 (더 많은 요소를 실행)을 얻기 위해 코드를 향상시킬 수 있습니까?
벡터 대신 집합을 사용 해본 적이 있습니까? 동일한 qieid를 가진 두 struct가 동일하다는 것을 세트에 알리기 위해 비교를 작성해야합니다. – Katu
@katutxakurra 좋은 생각입니다! 나는 전에 세트를 사용한 적이 없다. 고마워! –