2014-04-28 3 views
3

고정 크기 벡터의 벡터를 C++로 선언하려면 어떻게해야합니까? 예를 들어고정 크기 vecors의 C++ 벡터

:

vector of vectors with N elements.

이되지 않음 : 당신이 할 수있는

std::array<int, 10> myNumbers; 

이 유일한 아래쪽은 다음과 같습니다

vector<vector<int> > v(N) //declares vector of N vectors 
+0

는 "고정 된 크기의 벡터"는'표준 : vector'해야합니까? –

+1

std :: array 사용 Ben

+0

http://www.boost.org/doc/libs/1_55_0/libs/multi_array/doc/user.html – oakad

답변

5

std :: array는 여러분의 친구입니다.

http://en.cppreference.com/w/cpp/container/array

예를 들어, 당신은 고정 된 크기의 vector를 원하는 경우

typedef std::array<int, N> N_array; 

그런

std::vector<N_array> 
+1

std :: array는 C++ 11입니다. C++ 03을 사용하는 경우 [Boost.Array] (http://www.boost.org/doc/html/array.html)를 사용하십시오. –

+0

typedef를 사용할 필요가 없습니다. 'std :: vector >'완벽하게 괜찮습니다. (C++ 03에서는 닫는 괄호 사이에 공백이 필요하지만 C++ 11은 공백없이 공백을 인식하므로 pre-C++ 11 Visual C++ 버전) –

+0

@JanHudec, 당신은 완벽합니다. typedef는 구문을 약간 더 단순하게 만드는 것입니다. –

1

당신은 표준 : 배열을 사용할 수 있습니다 얼마나 많은 "활동적인"요소가 있는지 알지 못합니다. 왜냐하면 당신은 뒤로 밀거나 뒤로 물러 가지 않기 때문입니다. 일반 (그러나 안전한) 배열처럼 사용합니다.

1

을 사용할 수 있습니다, N 요소와 벡터의 벡터를 선언하는 대부분의 아마도 당신은 필요하지 않을 것입니다! 대신 std::array을 사용하십시오.

하지만 여전히 하나를 가지고 주장 ..

vector<vector<int> > vecOfVec(NumberOfVectors); 
for (int i = 0 ; i < NumberOfVectors; i++) 
    vecOfVec[i].resize(NumberOfElementsInVector);