Как инициализировать вектор в конструкторе класса - PullRequest
2 голосов
/ 29 ноября 2010

Как я могу инициализировать двумерный вектор в конструкторе класса с нулевыми значениями?Это не сработает:

#include <vector>
using namespace std;

class matrix {
 public:
  typedef int element_type;
  matrix(int dim):data(dim, vector<int>(dim, 0)) {
  }
 private:
  vector<vector<element_type>> data;
};

Нужно ли писать деструктор, чтобы освободить вектор?

Ответы [ 2 ]

5 голосов
/ 29 ноября 2010

Обновление: Код OP теперь действителен с C ++ 11.

Оригинальный ответ для более ранних версий C ++:


Вам нужно написать это так:

vector< vector<element_type> > data;

, потому что >> в противном случае анализируется как оператор потока, который здесь недопустим.И: Нет, вам не нужно освобождать это в деструкторе, потому что вы не создаете его в куче.

2 голосов
/ 29 ноября 2010

Нужно ли писать деструктор, чтобы освободить вектор?

Нет, потому что вы не получили никаких ресурсов в конструкторе.Это красота RAII .

...