2012-01-28 47 views

回答

7

23.2.3§4说:

a.clear() [...] 会使所有的引用,指针和迭代器指的是a元素还可能违反了过去,一个结束迭代器。

由于是“非失效”,使用后ptr结果clear不确定的行为没有这样的事情。

在附注中,不需要&(myvector[0])中的括号。在C++中,Postfix运算符总是比前缀运算符具有更高的优先级,所以编写&myvector[0]就好了。

+0

啊。谢谢,我纠正了。 – wilhelmtell 2012-01-28 17:02:07

3

它可能指向垃圾。 vector当实例增长或缩小时,根据需要重新分配内存,因此不能依赖地址不变。这就是为什么vector使用的类型必须遵守STL兼容的约束,如可复制性。这也是为什么auto_ptr在STL容器中不安全的原因。

相关问题