2016-03-27 4 views
0

В настоящее время я работаю с 2d векторным представлением таблицы, например, так:Векторный оператор [] возвращает значение

vector< vector<myStruct> > table 

MyStruct класс я сделал. Прямо сейчас, я делаю переменную типа myStruct и устанавливаю ее равным значению из таблицы. Я делаю следующее внутри цикла for.

myStruct object = table[i][j]; 

Я знаю, что operator [] для вектора возвращает ссылку, но так как я объявляю новый экземпляр MyStruct, является то, что на самом деле копируется в объект?

Я интересно, если делать что-то вроде следующего будет отличаться от я выше:

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

ли это предотвратить что-то копирование, делая объект только ссылку на что-то из-за стола, или оба они делают по существу одно и то же?

ответ

3

Право на оба счета. Первая копирует в создаваемый объект. Второй не копирует; он создает ссылку на элемент массива.

0

Я знаю, что оператор [] для вектора возвращает ссылку, но поскольку я объявляю новый экземпляр myStruct, что-то действительно копируется в объект?

Да.

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

это предотвратить бы что-то от копирования, что делает объект только ссылка на что-то из таблицы, или оба из них делают по существу то же самое?

Это не то же самое;
object ссылки на элемент внутри table.

Будьте осторожны, чтобы не стереть ссылочный элемент, иначе он будет болтаться.

 Смежные вопросы

  • Нет связанных вопросов^_^