【问题标题】:Returning a pointer to the object that an iter points to using `&*iter`使用`&*iter`返回指向iter指向的对象的指针
【发布时间】:2011-10-19 08:29:21
【问题描述】:

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

这样可以吗?

return &*iter;

这似乎不是一个好主意。

【问题讨论】:

  • 如果 vector ,那么您将返回 *iter 而不是 &*iter。
  • @jagansai:为什么? [编辑:刚刚注意到 q 不匹配]
  • @weezybizzle:指向元素或元素的指针?选择一个。

标签: c++ vector iterator


【解决方案1】:

完全没问题。但请注意,如果迭代器属于在调整大小时释放和重新分配内存的容器,则 returned 指针将变为无效。例如,如果迭代器是 std::vector 的迭代器,那么如果基础向量自行调整大小,iter&*iter 都将变为无效。

顺便说一下,题目的标题和你在第一行说的不匹配:

使用&*iter从迭代器返回一个指针(title)

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

这两个意思不同。您写的内容,即return &*iter 就是您在标题中所说的内容。但是第二个语句的意思是:

return *iter;

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

【讨论】:

  • 我忽略了这一点,很抱歉来晚了。
猜你喜欢
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
  • 2023-02-09
  • 1970-01-01
  • 2020-11-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-10
相关资源
最近更新 更多