使用`& * iter`返回指向iter指向的对象的指针

时间:2011-10-19 08:29:21

标签: c++ vector iterator

我有一个迭代器,我想返回一个指向它指向的元素的指针。

这样做可以吗?

return &*iter;

这似乎不是一个好主意。

1 个答案:

答案 0 :(得分:2)

完全没问题。但请注意,如果迭代器是一个在调整大小时释放并重新分配内存的容器,那么<​​em>返回的指针将变为无效。例如,如果迭代器是std::vector的迭代器,那么iter&*iter如果基础向量自身调整大小,则都会变为无效。

顺便说一下,主题的标题和你在第一行中所说的内容不匹配:

  

使用&*iter (标题)

从iter返回指针      

我有一个迭代器,我想返回它指向的元素。 (第一行)

这两者意味着不同。你写的是什么,即return &*iter就是你在标题中所说的。但第二个陈述意味着:

return *iter;

它返回迭代器语法指向的元素。它不会将指针返回给元素。即使矢量自身调整大小,这也是安全的。