Если у меня есть вектор объектов в одном классе, который я хочу изменить в другом, я бы попытался передать всю информацию по ссылке.
Что именно мне нужно передать по ссылке? Вектор? Объекты? Оба?
По сути, я спрашиваю: «В чем разница между ними?»
vector&<object> blah; // A reference to a vector of objects?
vector<object&> blah; // A vector of references to objects?
vector&<object&> blah; // A reference to a vector of references to objects???
Я не совсем уверен, как работают ссылки на массивы, такие как контейнеры. Это законно?
У вас не может быть вектора ссылок. Векторные элементы должны быть копируемыми и назначаемыми, а ссылки - нет. Таким образом, только первый вариант на самом деле является вариантом, но он записан std::vector<Object> &
.
Обратите внимание, что v[1]
уже возвращает ссылку на второй элемент, поэтому вы можете с радостью передавать отдельные элементы по ссылке.
Можно иметь вектор упаковщиков ссылок а-ля std::ref
, но если вы не знаете, что это такое, вам, вероятно, не стоит использовать его в данный момент.