我目前正在处理表的二维矢量表示,如下所示:
vector< vector< myStruct > > table
myStruct是我制作的课程。现在,我正在创建一个myStruct类型的变量,并将其设置为等于表中的值。我在for循环中执行以下操作。
myStruct object = table[i][j];
我知道向量的operator []
会返回一个引用,但是因为我正在声明一个新的myStruct实例,所以实际上是在复制到对象中了吗?
我想知道如果做以下的事情会与我上面的事情有所不同:
myStruct & object = table[i][j];
这是否会阻止某些内容被复制,使对象只是对表中某些内容的引用,或者这两者在本质上是一样的呢?
答案 0 :(得分:3)
两项都是正确的。第一个复制到正在创建的对象中。第二个不复制;它创建了对数组元素的引用。
答案 1 :(得分:0)
我知道vector的operator []返回一个引用,但是因为我正在声明myStruct的一个新实例,实际上是否正在复制到object中?
是
myStruct & object = table[i][j];
这会阻止某些东西被复制,使对象只能引用某些内容 表,或者这两者基本上是一样的吗?
他们不一样;
object
引用table
内的元素。
小心不要擦除引用的元素,否则它会摇晃。