2013-09-23 57 views
0

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

我需要有条件地创建21个整数矢量,通过if或开关子句,即(请注意,这是的借鉴代码只):

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方法。如果他们需要成为整数向量的载体呢?

+3

'的std ::矢量数据[21]'具有适当初始化列表。无论是我还是真的错过了对这个问题公认的错综复杂的描述。什么是阻止你索引到矢量数组取决于你的开关条件? – WhozCraig

+1

据我所知,你的问题实际上是缺乏对OOPs概念的理解。你想创建一些由特定条件驱动的不同对象?创造性的设计模式,如构建模式可能会帮助您。 – Arun

回答

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}}}; 

,然后,内每如果或开关,地方分配到herecalled movecube对象因此分配不会超出范围,因为你将在一般范围内调整一个对象(不是一个特定范围的句子句子......

这将需要激活-std = C++ 11在你的编译器。

祝福!

Hyp的