我有一个迭代器,我想返回一个指向它指向的元素的指针。
这样做可以吗?
return &*iter;
这似乎不是一个好主意。
答案 0 :(得分:2)
完全没问题。但请注意,如果迭代器是一个在调整大小时释放并重新分配内存的容器,那么<em>返回的指针将变为无效。例如,如果迭代器是std::vector
的迭代器,那么iter
和&*iter
如果基础向量自身调整大小,则都会变为无效。
顺便说一下,主题的标题和你在第一行中所说的内容不匹配:
使用
从iter返回指针&*iter
(标题)我有一个迭代器,我想返回它指向的元素。 (第一行)
这两者意味着不同。你写的是什么,即return &*iter
就是你在标题中所说的。但第二个陈述意味着:
return *iter;
它返回迭代器语法指向的元素。它不会将指针返回给元素。即使矢量自身调整大小,这也是安全的。