嗨我vector<vector<int> > matrix;
我将它初始化为:
inline void resize(const UINT nrows, const UINT ncols, T val) {
vector<T> v_rows(ncols, val);
matrix.resize(nrows, v_rows);
}
现在我担心如果再次调用大小的地方重新调整大小,我是否必须打电话给他?对于外部矩阵?或者清楚每个matrix.at(i).clear();或者我不需要做任何事情?
答案 0 :(得分:5)
只要T管理自己的资源,您就不必做任何事情。如果没有,则clear()不会有帮助。
答案 1 :(得分:3)
如果你在任何东西的向量上调用clear
(或者resize
的小号),那么需要删除的那个向量中的所有元素都会调用它们的析构函数并释放它们的内存。
如果你有一个向量向量,那么每个内向量的析构函数都会正确地清理它的资源。当行向量或列向量被破坏时,它会自动清理它。