我有一个迭代器,我想返回一个指向它指向的元素的指针。
这样可以吗?
return &*iter;
这似乎不是一个好主意。
最佳答案
完全没问题。但请注意,如果迭代器属于在调整大小时取消分配和重新分配内存的容器,则返回 指针将变为无效。例如,如果迭代器是 std::vector
的迭代器,则 iter
和 &*iter
都会在基础 vector 调整大小时失效本身。
顺便说一下,主题的标题和你在第一行说的不匹配:
Returning a pointer from an iter using
&*iter
(title)I have an iterator and I want to return the element it is pointing to. (first line)
这两个意思不同。你所写的,即 return &*iter
就是你在标题中所说的。但是第二个陈述是这样的:
return *iter;
它返回迭代器语法上指向的元素。它不会返回元素的指针。即使 vector 自行调整大小,这也是安全的。
关于c++ - 使用 `&*iter` 返回指向 iter 指向的对象的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7818493/