为什么在向量的向量上使用 clear() 不会清除这些向量的值?

Why clear() used on vector of vectors doesn't clear the values of those vectors?

本文关键字:向量 清除 为什么 clear      更新时间:2023-10-16

我非常确定向量调用所包含对象的析构函数,所以我只是在主向量上使用 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() 方法调用每个包含对象的析构函数,然后将结束指针设置为开头。

因此,被破坏对象的数据在保留存储中仍然可见(例如使用调试器)。