变量SIzed向量的条件分配

时间:2013-09-23 03:23:41

标签: c++ vector matrix

本周末我一直试图这样做,在某些明显的情况下,这种C ++语言似乎毫无用处。

我需要通过if或switch子句有条件地创建21个整数向量,这是(请注意这只是参考代码):

vector<int> vec;
if (i=1)
    vec=<..some vector definition..>;
elseif (i=2)
    vec=<..other vector definition..>;
...
<some variable>=vec[<some proper index>];

21个载体的大小差异最大。我在if,switch或任何其他条款中做出的每个声明和/或定义都超出了范围。

ussual代码(第21个向量):

static const int vec_aux21[] = {16,2,77,29};
vector<int> vec (vec_aux21, vec_aux21 + <vec_aux21_size> );

不起作用,输出if或switch子句时超出范围

是否有针对此的SMART方法。如果他们需要成为整数向量的载体怎么办?

1 个答案:

答案 0 :(得分:0)

例如,这样做(这只考虑了7个向量矢量的向量:

vector<vector< vector<int> > > movecube \
{{{1,0}},\
{{1,0},{0,1},{-1,0},{-1,-1}},\
{{2,1},{1,2},{-1,2},{-2,1},{-2,-1},{-1,-2},{1,-2},{2,-1}},\
{{1,1},{-1,1},{-1,-1},{1,-1}},\
{{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1}},\
{{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1}},\
{{0,0}}};

然后,在每个if或switch中,将赋值放置到此处调用的movecube对象。因此,分配不会超出范围,因为你将把一个对象放在一般范围内(而不是if句子的特定范围...

这需要在编译器上激活-std = c ++ 11。

祝福!

Hyp的