为什么在向量的向量上使用 clear() 不会清除这些向量的值?
Why clear() used on vector of vectors doesn't clear the values of those vectors?
我非常确定向量调用所包含对象的析构函数,所以我只是在主向量上使用 clear(),然后我重用了向量,并且存储在其中的向量值没有被清除......
编辑 - 代码:
vector<vector<int> > flush1;
flush1.reserve(4);
for(int i = 0; i != 4; ++i) flush1[i].reserve(7);
flush1.clear();
flush1[0].push_back(some_int);
flush1[1].push_back(some_int);
flush1[2].push_back(some_int);
flush1[3].push_back(some_int);
cout the size from flush1[0-3];
flush1.clear();
再一次
flush1[0].push_back(some_int);
flush1[1].push_back(some_int);
flush1[2].push_back(some_int);
flush1[3].push_back(some_int);
并从 flush1[0-3] cout-s 他们以前的尺寸 + 新尺寸(添加新旧尺寸)中获取尺寸
矢量对象有三个指针:开始、结束和保留存储结束。
clear()
方法调用每个包含对象的析构函数,然后将结束指针设置为开头。
因此,被破坏对象的数据在保留存储中仍然可见(例如使用调试器)。
相关文章:
- 清除结构向量时会发生什么?
- 在不同的线程中调用向量析构函数或清除
- 向量:清除它与删除它
- 在函数返回时,清除了添加到一对int和字符串向量的矢量中的元素
- C++:清除嵌套向量会导致奇怪的结果
- 将原始指针向量清除给由独特指针拥有的对象
- 当程序输入主要功能时,为什么要清除此std ::向量
- 当负载/清除大量数据时,STD ::向量越慢
- 为什么在向量的向量上使用 clear() 不会清除这些向量的值?
- 在c++中清除对的向量
- 是否可以在析构函数中清除向量
- 清除向量时,stl 向量中的 stl 向量是否超出范围?
- 向量:清除/pop_back不会运行析构函数
- 在函数中返回向量后清除内存
- C++:清除对象向量时出现问题
- 如何在一种类型的 vector<pair<int,vector> > 中清除()内部向量?
- 如何在c++中清空/清除向量和数组
- 如何在<Mat>opencv c++中有效地清除向量
- 交换可以用来清除std::set作为向量吗
- 可以向量<T>::清除投掷吗?