我正在尝试删除其中的所有内容std::vector
使用以下代码
vector.erase( vector.begin(), vector.end() );
但它不起作用。
更新:clear不会破坏向量保存的元素吗?我不想这样,因为我仍在使用这些对象,我只想清空容器
我认为你应该使用std::vector::clear http://en.cppreference.com/w/cpp/container/vector:
vec.clear();
EDIT:
不清除破坏元素
由向量持有?
是的,它确实。它在返回内存之前调用向量中每个元素的析构函数。这取决于您在向量中存储的“元素”。在下面的示例中,我将对象本身存储在向量中:
class myclass
{
public:
~myclass()
{
}
...
};
std::vector<myclass> myvector;
...
myvector.clear(); // calling clear will do the following:
// 1) invoke the deconstrutor for every myclass
// 2) size == 0 (the vector contained the actual objects).
例如,如果您想在不同容器之间共享对象,您可以存储指向它们的指针。在这种情况下,当clear
被调用时,仅释放指针内存,未触及实际对象:
std::vector<myclass*> myvector;
...
myvector.clear(); // calling clear will do:
// 1) ---------------
// 2) size == 0 (the vector contained "pointers" not the actual objects).
对于评论中的问题,我认为getVector()
定义如下:
std::vector<myclass> getVector();
也许你想返回一个引用:
// vector.getVector().clear() clears m_vector in this case
std::vector<myclass>& getVector();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)