我有一段需要定义vector
向量的代码。我在循环广告中使用它们每次填充它,片段看起来像:
vector < vector<T> > buckets;
for ( i = 0 -> N) {
buckets.clear();
....
}
我的问题是在对.clear()
执行bucket
操作之后,在下一次迭代中我看到旧值存在,这是常见的吗?
提前致谢!
答案 0 :(得分:2)
clear
可能只是将“使用的条目数设置为零”[1],因此旧条目仍可在向量中读取。如果您不使用size()
来获取新大小,而是使用其他方法,则值仍然存在。
clear
确实可能确实完全删除了内容,而且它不再可访问。在这种情况下,如果您尝试使用某些内容,您的程序将崩溃。
[1]是的,如果你想要细节,它确实“比”更多,我正在简化它。例如,它将向析构函数调用向量中的元素,但它仍然只是“东西仍然存在”的情况,只是不再被视为有效。