如何在类的构造函数中初始化向量

mul*_*lle 2 c++ constructor initialization vector

如何在具有零值的类的contstructor中初始化二维向量?这不起作用:

#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;
};
Run Code Online (Sandbox Code Playgroud)

我是否必须编写析构函数来释放向量?

jwu*_*ler 5

更新: OP的代码现在从C++ 11开始有效.

早期版本的C++的原始答案:


你需要像这样写:

vector< vector<element_type> > data;
Run Code Online (Sandbox Code Playgroud)

因为>>否则被解析为流操作符,这在此处无效.而且:不,你不需要在析构函数中释放它,因为你不是在堆上创建它.

  • C++ 0x应该解决这个烦恼. (2认同)