gpt4 book ai didi

c++ - operator[] 根据变量类型返回引用或拷贝

转载 作者:太空宇宙 更新时间:2023-11-04 16:17:00 24 4
gpt4 key购买 nike

引用 this , 如果我有 std::map<double, Object> my_map , 以下是等价的吗?

Object& obj = my_map[1];
Object obj = my_map[1];

我知道operator[]通过引用返回,第一种方法也是正确的方法,而不是创建拷贝,或者它们是否相同。如果它们相同,我不确定它们为什么会相同。

同样,如果我也有...

std::map<double, Object>::iterator it;

下面是不是也类似?

Object& obj = it->second;
Object obj = it->second;

最佳答案

Object& obj = my_map[1];
Object obj = my_map[1];

这些不是等价的(如果没有别的,有一个完整的符号差:))。第一个创建对映射中存在的对象的引用,第二个创建它的拷贝(并且它需要 Object 的可访问复制构造函数)。

迭代器风格的代码行实现了与调用 operator[] 的前两行相同的功能。

关于c++ - operator[] 根据变量类型返回引用或拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21652961/

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