c++ - 将转换运算符放入迭代器中以将其转换为指针是个好主意吗?

标签 c++

我今天看到以下代码:

options.push_back(&*i);

其中i是一个迭代器,容器options存储指向*i类型的指针。生成的 &*i 有点难看,我开始想知道:

Is it a good idea to add a conversion operator for converting to a pointer of *i?

你觉得怎么样?

最佳答案

这并不难看,但可能很危险:如果迭代器i的源是动态分配的,并且在容器options之前被删除,这将导致容器中包含无效指针.
如果不是,那么这是完全有效的代码。为了使其更具可读性,您可以添加大括号:

options.push_back(&(*i));

如果您没有在整个代码中使用此构造,我不会在此处使用转换运算符。

关于c++ - 将转换运算符放入迭代器中以将其转换为指针是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16329368/

相关文章:

c++ - 如何提高使用屏障的 C++ pthread 代码的时间性能

c++ - 谷歌模拟 ByRef 方法

c++ - 在模板函数中使用 auto 和 decltype

c++ - 根据模板参数的模板函数名称

c++ - 如何修复 "no matching function for call to ' atoi'"错误?

c++ - 使用空的 weak_ptr 作为参数调用 map::count 是否安全?

c++ - 立体校准时访问冲突?

c++ - 使用 gcc 插件获取类注释

c++ - Windows Vista 下的指针稳定性

c++映射范围内的删除