矢量运算符[]返回值

Vector operator [ ] return value

本文关键字:返回值 运算符      更新时间:2023-10-16

我目前正在处理一个表的二维矢量表示,如下所示:

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内部的元素。

注意不要擦除被引用的元素,否则它会挂起。