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 句を出力すると動作しない、範囲外になる

これにはSMARTアプローチがありますか。それらが int のベクトルのベクトルである必要がある場合はどうでしょうか?

4

1 に答える 1

0

たとえば、このようにします (これは、int のベクトルのベクトルの 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 に答える