2014-02-09 3 views
51

Если у меня есть матрица NxNКак инициализировать вектор векторов в структуре?

vector< vector<int> > A; 

Как я должен инициализировать его?

Я пытался без успеха:

A = new vector(dimension); 

ни:

A = new vector(dimension,vector<int>(dimension)); 
+1

Вы должны, вероятно, проконсультируйтесь с вводной книгой. new возвращает указатель на то, что он выделил (и в любом случае он не нужен). – Borgleader

+0

vector > MyMatrix [4] [4]; // работает также – Mich

+3

Этот вопрос не является дубликатом. Предполагаемый связанный дубликат - это другой вопрос, для которого верный ответ также отвечает на этот вопрос, но вы не найдете его при поиске этого вопроса. –

ответ

103

используется new для выполнения динамического распределения. Он возвращает указатель, указывающий на динамически выделенный объект.

У вас нет причин использовать new, так как A является автоматической переменной. Вы можете просто инициализирует A используя конструктор:

vector<vector<int> > A(dimension, vector<int>(dimension)); 
+0

Хорошо, я нашел свою проблему. Я не упоминал, что у меня есть острая структура, у которой есть этот вектор. И делать то, что вы говорите: myStructVble-> A (размер, вектор (размерность)); , он бросает меня «функция не соответствует». – anat0lius

+3

@LiLou_ Вам придется инициализировать конструктор структуры. Или скопируйте с временного члена: 'myStructVble-> A = вектор > (размер, вектор (размер));' –

14

Как это:

#include <vector> 

// ... 

std::vector<std::vector<int>> A(dimension, std::vector<int>(dimension)); 

(. Pre-C++ 11 вы должны оставить пустое пространство между угловыми скобками)

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