2012-04-28 2 views
-1

가능한 중복 :
Vector Initialisation in C++벡터 C++ 오류

내 코드에서 벡터를 사용하고 있습니다. 아래와 같이 에러를 일으키는

라인은 :

vector<Node> alt_seq ; 
for(int j=0; j<alt_cf.getNoOfNodes(i); j++) 
{ 
    Node temp_node = *alt_itr; 
    alt_itr++; 
    alt_seq.push_back(temp_node); 
} 

라인 :

alt_seq.push_back(temp_node); 

런타임 에러를 야기한다. 그러나 다음과 같이 초기 크기로 Vector를 초기화하면

벡터 alt_seq (1000); 이 경우 코드가 올바르게 작동합니다. 그러나 벡터의 객체 수가 런타임에 가변적 일 때 초기 크기를 제공하고 싶지 않습니다. 도와주세요. 저는 C++을 처음 접했습니다. 참고로

는 전체 방법의 기능은 여기에 있습니다 :

http://pastebin.com/2dUFEui5

클래스 노드의 정의 현재 위치 :

http://pastebin.com/zDbJikK7

+0

'alt_itr'이란 무엇입니까? – juanchopanza

+0

alt_itr은 노드 객체 –

+0

의 벡터에 대한 반복자로 어떤 런타임 오류가 발생했는지 게시 할 수 있습니까? – vguzmanp

답변

0

수 std 고려 : 벡터 동적 크기가입니다. 초기 값은 단지 초기 값이지만 2000 개의 요소를 저장하면 재 할당으로 인해 효율성이 떨어지더라도 2000 개의 요소가 저장됩니다.

+0

예, 현재 코드의 문제점은 무엇입니까 ?? –

0

노드의 copy constructor과 할당 연산자에 실수로 잘못 입력했습니다. Vector는 재 할당시 데이터를 복사하며 해당 복사 작업은 동일한 cfrag 멤버로 여러 노드를 생성합니다.