【问题标题】:Vector operator [ ] return value向量运算符 [ ] 返回值
【发布时间】:2016-07-14 12:48:40
【问题描述】:

我目前正在处理表格的 2d 矢量表示,如下所示:

vector< vector< myStruct > > table

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

myStruct object = table[i][j];

我知道向量的 operator [] 返回一个引用,但由于我声明了一个 myStruct 的新实例,所以实际上是在将某些内容复制到对象中吗?

我想知道执行以下操作是否与我上面的操作有所不同:

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

这是否会阻止某些内容被复制,使 object 只是对表中某些内容的引用,还是两者本质上都在做同样的事情?

【问题讨论】:

    标签: c++ vector operator-keyword


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我知道向量的操作符 [] 返回一个引用,但由于我声明了 myStruct 的一个新实例,所以实际上是在将某些内容复制到对象中吗?

      是的。

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

      这是否会阻止某些内容被复制,使 object 只是对来自 表,还是两者都在做同样的事情?

      它们不一样;
      object 引用了table 中的一个元素。

      注意不要擦除引用的元素,否则它会悬空。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-08
        • 1970-01-01
        • 1970-01-01
        • 2012-01-01
        • 2013-07-31
        • 2019-12-29
        • 2019-04-14
        • 1970-01-01
        相关资源
        最近更新 更多