2013-09-23 94 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的