繁体   English   中英

可变大小向量的条件分配

[英]Conditional Allocation of Variable SIzed Vectors

我本周末一直在尝试做所有这些事情,在某些明显的情况下,这种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或任何其他子句中进行的每个声明和/或定义都超出范围。

通常的代码(对于第21个向量):

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

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

有没有为此的SMART方法。 如果它们需要成为int向量的向量怎么办?

例如,以这种方式进行设置(这仅考虑ints向量的vectors的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。

最好的祝愿!

炒作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM