矢量运算符[]返回值
Vector operator [ ] return value
我目前正在处理一个表的二维矢量表示,如下所示:
vector< vector< myStruct > > table
myStruct是我制作的一个类。现在,我正在创建一个myStruct类型的变量,并将其设置为表中的值。我正在for循环中执行以下操作。
myStruct object = table[i][j];
我知道向量的operator []
返回了一个引用,但由于我声明了myStruct的一个新实例,实际上有什么东西被复制到了对象中吗?
我想知道做下面这样的事情是否会与我上面的不同:
myStruct & object = table[i][j];
这会防止某些东西被复制,使对象仅引用表中的某个东西吗?或者这两者本质上是在做相同的事情吗?
两个计数都正确。第一个复制到正在创建的对象中。第二个不复制;它创建对数组元素的引用。
我知道向量的运算符[]返回一个引用,但由于我声明了myStruct的一个新实例,所以实际上有什么东西被复制到对象中了吗?
是的。
myStruct & object = table[i][j];
这会防止某些东西被复制吗,使对象仅引用表,或者这两者在做本质上相同的事情?
它们不一样
CCD_ 2引用CCD_ 3内部的元素。
注意不要擦除被引用的元素,否则它会挂起。
相关文章:
- 使用赋值运算符重载从类中返回jobject
- 运算符重载是否真的需要返回值C++?
- 为什么我的类工作正常,即使在返回垃圾值作为赋值运算符和空复制构造函数的返回之后
- 赋值运算符的返回值可以作为参考吗?
- 返回带有 ?: 运算符的可选值
- 为什么类的赋值运算符的返回类型通常是非常量(而不是常量)引用?
- 字符串流运算符>>返回值
- 动态指针引用数组由三元运算符返回值,但有异常
- ()运算符的返回值
- 函数返回值的位运算符提升
- 赋值运算符重载 c++ 的返回值
- 重载运算符->() 以更改被调用函数的返回值
- 在对类对象的赋值进行链接时获取垃圾值,使用按值返回类对象的赋值运算符重载
- 获取对运算符 [] 返回值unordered_map引用
- 为什么三元运算符阻止返回值优化
- 尽管返回了引用,但无法链接重载的赋值运算符
- 没有返回值的c++类成员运算符定义
- 为什么赋值运算符必须返回任何内容
- 为什么在传递重载运算符的返回值时不调用复制构造函数
- 重载不同返回值的运算符new