矢量operator []返回值

时间:2016-03-27 00:10:34

标签: c++ vector operator-keyword

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

vector< vector< myStruct > > table

myStruct是我制作的课程。现在,我正在创建一个myStruct类型的变量,并将其设置为等于表中的值。我在for循环中执行以下操作。

myStruct object = table[i][j];

我知道向量的operator []会返回一个引用,但是因为我正在声明一个新的myStruct实例,所以实际上是在复制到对象中了吗?

我想知道如果做以下的事情会与我上面的事情有所不同:

myStruct & object = table[i][j];

这是否会阻止某些内容被复制,使对象只是对表中某些内容的引用,或者这两者在本质上是一样的呢?

2 个答案:

答案 0 :(得分:3)

两项都是正确的。第一个复制到正在创建的对象中。第二个不复制;它创建了对数组元素的引用。

答案 1 :(得分:0)

  

我知道vector的operator []返回一个引用,但是因为我正在声明myStruct的一个新实例,实际上是否正在复制到object中?

myStruct & object = table[i][j]; 
     

这会阻止某些东西被复制,使对象只能引用某些内容   表,或者这两者基本上是一样的吗?

他们不一样;
object引用table内的元素。

小心不要擦除引用的元素,否则它会摇晃。