-3

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

vector < vector<T> > buckets;

for ( i = 0 -> N) {
  buckets.clear();
  ....
}

我的问题是,即使在对 执行.clear()操作之后bucket,在下一次迭代中我看到旧值存在,这通常吗?

提前致谢!

4

1 回答 1

2

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

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

[1] 是的,如果您想要详细信息,它会“更多”,我正在简化它。例如,它将调用析构函数向量中的元素,但它仍然只是“东西仍然存在”的情况,只是不再被视为有效。

于 2013-03-06T20:37:13.670 回答