问个vector clear的问题.
vector<vector<int>> vi;
然后对这个二维向量做push_back操作赋值
如果最后我要释放vector内存,请问vi.clear()释放了内层的vector<int>的内存了么?
或是我是否需要显示的对内层的每一个vector<int>调用clear操作.
[解决办法]
如果最后我要释放vector内存,请问vi.clear()释放了内层的vector <int> 的内存了么?
是的 ,vi.clear()时会调用内内层vector <int>的析构函数。
[解决办法]
不用,只要你使用的内存不是new的
标准库会帮你完成
[解决办法]
当然不需要每个都调用clear操作。
vi.clear()会对其每个vector<int>类型的元素都执行析构,而vector<int>的析构显然会自动释放内存。
[解决办法]
1,只要不是全局变量
2,只要不是自由存储区变量(即new类型)
函数结束后,标准库会通过析构函数自动清理变量内存的
如果中间要释放内存,则要一层一层的释放
[解决办法]
不需要,stl的优点就是这个,比较人性化
[解决办法]
stl容器存的是副本,在清除的时候会调用析构函数
如果你的元素内容不是new出来的