Передача векторов по ссылке

Если у меня есть вектор объектов в одном классе, который я хочу изменить в другом, я бы попытался передать всю информацию по ссылке.

Что именно мне нужно передать по ссылке? Вектор? Объекты? Оба?

По сути, я спрашиваю: «В чем разница между ними?»

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???

Я не совсем уверен, как работают ссылки на массивы, такие как контейнеры. Это законно?

23
задан Peter Mortensen 5 September 2015 в 12:46
поделиться

1 ответ

У вас не может быть вектора ссылок. Векторные элементы должны быть копируемыми и назначаемыми, а ссылки - нет. Таким образом, только первый вариант на самом деле является вариантом, но он записан std::vector<Object> &.

Обратите внимание, что v[1] уже возвращает ссылку на второй элемент, поэтому вы можете с радостью передавать отдельные элементы по ссылке.

Можно иметь вектор упаковщиков ссылок а-ля std::ref, но если вы не знаете, что это такое, вам, вероятно, не стоит использовать его в данный момент.

4
ответ дан 29 November 2019 в 01:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: