C++ 向量元素的清除向量

C++ 向量元素的清除向量,c++,C++,我有一段代码需要定义向量的vector。我在循环中使用它们,每次填充时,代码段如下所示: vector < vector<T> > buckets; for ( i = 0 -> N) { buckets.clear(); .... } vectorbucket; 对于(i=0->N){ 桶。清除(); .... } 我的问题是,即使在对bucket执行.clear()操作之后,在下一次迭代中,我看到旧值存在,这是否正常 提前谢谢 clear可能只是将

我有一段代码需要定义向量的
vector
。我在循环中使用它们,每次填充时,代码段如下所示:

vector < vector<T> > buckets;

for ( i = 0 -> N) {
  buckets.clear();
  ....
}
vectorbucket;
对于(i=0->N){
桶。清除();
....
}
我的问题是,即使在对
bucket
执行
.clear()
操作之后,在下一次迭代中,我看到旧值存在,这是否正常


提前谢谢

clear
可能只是将“已用条目数设置为零”[1],因此旧条目在向量中仍然可以读取。如果不使用
size()
获取新的大小,而是使用其他方法,则值仍然存在

也可能
clear
确实完全删除了内容,并且不再可访问。在这种情况下,如果您尝试使用某些内容,您的程序将崩溃


[1] 是的,它比这“更多”如果你想了解细节,我会简化它。例如,它会将析构函数调用为向量中的元素,但它仍然只是“stuff将仍然存在”的一个例子,只是不再被视为有效

显示您如何“查看”这些值。
对于(i=0->N)
无效C++您确实需要向我们显示实际的代码。抱歉,完整的代码是vectorbucket;对于(size_t i=0;iclear()时,我在标准中找不到任何阻止实现释放已分配内存的内容。我是不是漏掉了什么?嗯,但标准上什么也没说。奇怪。我认为你实际上并不是反对我解释提问者最初观察结果的回答,而是反对我回答的确切措辞。我添加了另一个“可能”来解释它也不能保证它会这样做。是的。。。cplusplus.com与标准不一致。我不知道该相信什么。