gpt4 book ai didi

c++ - &*x 操作是否创建拷贝?

转载 作者:太空狗 更新时间:2023-10-29 23:44:14 24 4
gpt4 key购买 nike

我在转换 std::list<MyType>::iterator 时遇到了一些问题至 MyType* .我有一个数组 MyType当我遍历它时,我调用了一些 void doSomething(const MyType* thing) .最终我这样做了:

std::list<MyType> types = ... something here ...;
for( std::list<MyType>::const_iterator it = types.begin(), end = types.end(); it != end; ++it ) {
doSomething(&*it);
}

我的问题是,我是否创建 MyType 的内存拷贝?通过这个操作:

&*it

尝试简单地将迭代器作为指针传递,或者将迭代器转换为指针会引发编译器错误。

最佳答案

不,*& 的序列不会创建拷贝:

    应用于迭代器的
  • * 生成一个引用
  • & 应用于引用产生原始地址

这两个步骤都不需要复制 MyType数据

注意:当可能存在重载运算符& 时,使用std::address_of(*it) 更安全。表达。

关于c++ - &*x 操作是否创建拷贝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33697619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com