2013-09-23 2 views
0

Я пытаюсь сделать это ВСЕ в этот уик-энд, и этот C++ язык кажется действительно бесполезным при определенных очевидных ситуациях.Условное распределение переменных SIzed Vectors

Мне нужно создать 21 целочисленных векторов условно, через если переключатель или пункта, то есть (пожалуйста, обратите внимание, что это Referencial только код):

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

не работает, выйти за рамки при выводе, если переключатель или пункт

Есть ли SMART подхода для этого. Что делать, если они должны быть векторами векторов ints?

+3

'STD :: вектор данные [21]' с соответствующим списком инициализатора. Либо это, либо я действительно что-то пропустил в откровенно запутанном описании этой проблемы. Что мешает вам индексировать в массив векторов, зависящих от условий вашего переключения? – WhozCraig

+1

Насколько я понимаю, ваша проблема действительно не в понимании концепций ООП. Вы хотите создать кучу разных объектов, управляемых определенными условиями? К вашим услугам могут быть созданы шаблоны проектирования, такие как шаблон строителя. – 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

Смежные вопросы