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

标签 c++ vector iterator

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

这样可以吗?

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/

相关文章:

c++ - 参数化 sc_lv 时报告错误(表达式必须具有常量值)

c++ - 如何在 C++ 中将枚举与用户输入一起使用

c++ - 按行、列和深度顺序打印多维 vector

python - 是否已经有 python 生成器可以做这些基本的事情?

c++ - 迭代器取消引用中的段错误

一个列表理解中多个列表的Python值

c++ - 无法在 Windows 10 上的 Visual Studio 2015 上安装缺少的功能

c++ - 返回 bool 值的函数的命名约定是什么?

Android矢量drawables vrs png

c++ - 为什么 vector 被视为按值传递,即使它是通过 const 引用传递的?