0

这个周末我一直在尝试做这一切,而这种 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 子句时超出范围

有没有一个聪明的方法。如果它们需要成为整数向量的向量怎么办?

4

1 回答 1

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。

最良好的祝愿!

炒作

于 2013-09-25T02:28:19.110 回答