2016-12-18 1 views
-6

Я пытаюсь создать массив векторов, мне действительно нужен ARRAY of VECTORS (а не вектор векторов), потому что положение вектора в массиве имеет значение. Проблема заключается в том, что я не знаю размер массива в начале я прочитал его из файла при вызове конструктора класса, так что я думаю, что я должен использовать «новый» операторМассив векторов

std::vector<Vertex>* excess_vec ; 
excess_vec = new std::vector<Vertex>[2*num_of_nodes]; 

где Vertex является структура, но заполнение массива векторов в

for (int i = 0; i<vertices.size(); i++) { 

     excess_vec[0].push_back(vertices[i]); 
     excess_vec[3].push_back(vertices[i]); 


} 

таким образом, где вершины является вектором Vertex результате этого при отладке в Xcode

enter image description here

, похоже, это просто вектор, но не массив векторов, я бы ожидать, что-то вроде этого:

[0] 
     [0] 
     [1] 
     . 
     . 
     . 

    [1] 
    [2] 
    [3] 
    [0] 
    [1] 
    [2] 
    . 
    . 
    . 

Итак, я немного запутался об этом. Заранее спасибо)

+3

_ «поэтому я думаю, что я должен использовать« новый »оператор» _ Нет. Это то, для чего «std :: vector». –

+0

Но «новое» для массива не для вектора. –

+0

Учитывая, что 'std :: vector' является просто инкапсулированным массивом, я не вижу смысла. –

ответ

0

Если вы хотите, чтобы сделать массив векторов, читая это размер из файла, вы должны сделать это:

int size; 
in>>size; 
vector<A>[size] vector_array; 

Я не уверен, что вы хотите. Если вы хотите, чтобы прочитать это значение из файла вы можете сделать это:

for(int i = 0;i<array.size();i++){ 
    //get data from file and convert it to the object you want 
    vector_array[i] = generated_object; 
} 

Если вы хотите скопировать векторы из массива в другой вектор массива вы можете использовать это:

for(int i = 0;i<size_of_array_to_copy;i++){ 
    vector_array[i] = array_to_copy[i]; 
}  

Да, будет выглядеть как дерево, вектор векторов тоже выглядит как дерево. Тот факт, что вы находитесь в конструкторе класса или который вы назовете одним в будущем, ничего не меняет. Не важно, что вы используете структуру, структуры и классы схожи. Вы должны просто использовать векторы, они просто массивы с динамическим размером.

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

  • Нет связанных вопросов^_^