2014-04-28 83 views
3

如何在C++中声明向量的固定大小向量?固定大小向量的C++向量

例如:

vector of vectors with N elements.

不是这个:

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

是否“固定大小的矢量”必须是一个'的std :: 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

例如,声明向量的向量,其具有N个元素,则可以

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

你可以使用std ::数组:

std::array<int, 10> myNumbers; 

唯一不好的一面,这是你可以看不到有多少“积极”的因素,因为你不会推回去。你可以像普通(但安全)的数组一样使用它。

1

如果希望有固定大小的vector,最可能你不需要一个!改为使用std::array

但你仍然坚持要有一个..

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