可变大小向量的条件分配 这个周末我一直在尝试这样做,这个C++语言在某些明显的情况下似乎是无用的。

可变大小向量的条件分配 这个周末我一直在尝试这样做,这个C++语言在某些明显的情况下似乎是无用的。,c++,vector,matrix,C++,Vector,Matrix,我需要通过if或switch子句有条件地创建21个整数向量,即(请注意,这只是参考代码): vec; 如果(i=1) 向量=; elseif(i=2) 向量=; ... =vec[]; 21个向量的大小差异最大,。我在if、or开关或任何其他子句中所做的每个声明和/或定义都超出了范围 ussual代码(用于第21个矢量): static const int vec_aux21[]={16,2,77,29}; 向量向量向量(vec_aux21,vec_aux21+); 不工作,输出if或swi

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

vec;
如果(i=1)
向量=;
elseif(i=2)
向量=;
...
=vec[];
21个向量的大小差异最大,。我在if、or开关或任何其他子句中所做的每个声明和/或定义都超出了范围

ussual代码(用于第21个矢量):

static const int vec_aux21[]={16,2,77,29};
向量向量向量(vec_aux21,vec_aux21+);
不工作,输出if或switch子句时超出范围


有没有一个聪明的方法来解决这个问题。如果它们需要是整数向量的向量呢?

这样做,例如(这只考虑整数向量的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}}};
vector>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

std::矢量数据[21]
有一个合适的初始值设定项列表。要么是这样,要么我真的错过了这个问题公认的复杂描述中的一些东西。是什么阻止你根据切换条件索引到向量数组中?据我所知,你的问题确实是缺乏对OOPs概念的理解。你想创建一堆由特定条件驱动的不同对象?创造性的设计模式(如生成器模式)可能会对您有所帮助。
static const int vec_aux21[] = {16,2,77,29};
vector<int> vec (vec_aux21, vec_aux21 + <vec_aux21_size> );
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}}};