2009-03-18 2 views
0

나는 당신에게 간단한 질문이라고 생각합니다 .... 저는 꽤 새로운 C++입니다 .....벡터 크기를 조정할 때 세그먼트 화 오류를 방지하려면 어떻게해야합니까?

벡터가 정의되어 있습니다. 같은 :

vector<vector<float> > big_vector;

나는 다음 big_wector가 약 20 만 요소를 가지고, 파일을 읽고이 벡터를 초기화. 각

가 그럼 난 몇 가지 요소에 대해 내가 먼저 크기를 조정해야, big_vector의 요소를 수정하고 싶었> 벡터 < 플로트 (예 : 0 ~ 300에서) 내가 달릴 때

big_vector[i].resize(new_size);

프로그램은 먼저 약간의 변경 후에 위의 줄에서 "세분화 오류"가 발생했습니다.

+0

당신이 그들이 범위를 벗어 있는지 확인하기 위해 전달하는 값을 검사하는 디버거를 사용하여 생각 해 봤나? –

+0

도움이되는 정보가 충분하지 않습니다. 코드를 게시 한 경우 최소한 현재 수행중인 작업을 확인할 수 있습니다. 문제에 대한 영어 설명은 실제로 생각한 바가 아니라 자신이 생각하는 바를 설명하기 때문에 좋은 생각이 아닙니다. –

+0

ㅎ, "큰 의사" –

답변

0

벡터 벡터가 있습니다.

big_vector[i] (i에서 플로트 벡터)에 액세스하려면 먼저 big_vector 자체의 크기를 설정해야합니다.

5

먼저 크기를 조정할 벡터가 있도록 big_vector의 크기를 조정해야합니다.

int total_vectors = 100; 
big_vector.resize(total_vectors); 
for(int i = 0; i < total_vectors; ++i) 
    big_vector[i].resize(new_size); 
1

왜 벡터의 크기를 조정해야합니까? 간단한 push_back으로 충분하지 않습니까? 또는 인덱스별로 값을 설정합니까? 당신이 인덱스로 값을 설정하면

내가 사용하는 것이 좋습니다 것입니다 표준 : 발생기와 generate_n 표준 : back_inserter

관련 문제