2013-07-04 1 views
0

세그먼트 번호가 있습니다. 이 세그먼트는 특정 개체에 속합니다. 즉, 하나의 객체에는 여러 세그먼트가 있습니다. segment 레이블은 어떤 세그먼트가 어떤 개체에 속해 있는지 알려줍니다. 이제 개체 라벨과 관련하여 내 세그먼트 번호를 분할하고 싶습니다.프로그래밍 오류 - 프로그램에서 나를 데려왔다

나는 아래 코드를 작성했습니다. 개체의 수 (최대)를 알고 있다고 가정합니다. 내가 컴파일 할 때

클래스 세그먼트는이 오류를 제공하지 않습니다, 세그먼트

Segments mysegments; 
Segments::const_iterator itr; 
vector<Segments> segments_per_obj; 

segments_per_obj.resize(max); 

for (itr= mysegments.begin(); itr!= mysegments.end(); itr++){   
    segments_per_obj[itr->Label()].push_back(*itr); 
} 

의 벡터로 정의된다.

Segments mysegments; 
Segments::const_iterator itr; 
vector<Segments> segments_per_obj; 


for (itr= mysegments.begin(); itr!= mysegments.end(); itr++) 
{   
    int index = itr->Label(); 
    for (int i = segments_per_obj.size(); i <= index; ++i) 
    { 
     segments_per_obj.push_back(<create a new segment>); 
    } 

    segments_per_obj[index].push_back(*itr); 
} 

또는지도를 사용 제안

이 더 적합 같습니다 하지만 (myprog.exe)를 실행할 때, 내 프로그램의 외출 및

myprog.exe has encountered a problem and needs to close. We are sorry for the inconvenience. 
Please tell Microsoft about this problem. 
+0

@ 크리스 벡터 대신지도를 사용합니다. – slinga

+1

아마도'resize' 호출이 필요 하겠지만 size 생성자를 호출하는 것이 낫습니다. 벡터가 아니라지도를 원하는 것처럼 보입니다. – chris

답변

1

이 시도 것을 말하는 오류 창을 준 이 경우.

+0

루프를 'segments_per_obj.resize (index + 1)'로 대체 할 수 있습니다. – Paranaix

+0

@Kostia : 제안에 감사드립니다. 나는 이것을 시도 할 것이다. 하지만, 나는이 코드를 얻지 못한다. segments_per_obj.push_back (<새 세그먼트 만들기>); <새 세그먼트 만들기>는 무엇을 의미합니까? – slinga

+0

세그먼트 ()를 호출하여 새 세그먼트 개체를 만듭니다. – Kostia

0

segments_per_obj에는 내부에 요소가 없습니다. 따라서 itr-> Label() 요소에 액세스하려고하면 프로그램이 중단됩니다.

  1. 이 segments_per_obj에 빈 세그먼트 객체를 추가

    는이 개 솔루션이 있습니다. itr-> Label()의 최대 값만큼 추가해야합니다. 이를 해결하는 방법 :

  2. 는 segments_per_obj

+1

+1이'std :: map'을 언급하는 것으로 +1해야합니다. –

+0

@priomsrb : 첫 번째 제안을 따르는 경우 어떻게 할 수 있습니까? 당신이 의미하는 것을 분명히 얻지 못했습니다. 또한, 나는 나중에 벡터로 사용하고자하는 맵보다는 벡터로 작업하기를 좋아합니다. 그래서, 내가 처음지도를 사용한 다음 갑자기 그것을 벡터로 변환하면 여전히 빠를 것입니다. 감사. plz 날 설명해. – slinga

+0

그는 액세스하기 전에 벡터를 rezises,이 answere 부분적으로 잘못되었습니다. 그것은 '최대'가 낮을 수도 있습니다. – Paranaix

관련 문제