读书人

问个vector clear的有关问题

发布时间: 2012-03-16 16:34:56 作者: rapoo

问个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出来的

读书人网 >C++

热点推荐