@victor1234
IT: Компьютерное зрение, linux, с++

Имеет ли смысл передавать STL сонтейнеры по ссылке в параметры функции для экономии памяти и увеличении скорости?

Или современные компиляторы (в первую очередь gcc) сами оптимизируют этот момент?

Вопрос возник поcле прочтения этой www.habrahabr.ru/post/117193 статьи, абзац: Передача всего и везде по указателям (ссылкам)
  • Вопрос задан
  • 203 просмотра
Пригласить эксперта
Ответы на вопрос 4
gbg
@gbg Куратор тега Программирование
Любые ответы на любые вопросы
Безусловно имеет. Откуда компилятору знать, может, вы действительно хотите с копией работать, а не с оригиналом.

Другое дело, возврат из функции. Там работает RVO (return value optimization), так что можно не париться, а просто отдавать контейнер.
Ответ написан
Olej
@Olej
инженер, программист, преподаватель
Или современные компиляторы (в первую очередь gcc) сами оптимизируют этот момент?

Компилятор не имеет права такое делать, потому что это будет не оптимизация, а вредительство.
Ответ написан
Комментировать
@pavelkolodin
Это не "имеет смысл", а первое правило. А компилятору такое оптимизировать запрещено, от этого меняется семантика кода, а не только делается оптимизиция.
Ответ написан
Комментировать
@jackroll
Сверхразум
const container_type &container - если функция не меняет состояние контейнера.
container_type &container - если меняет.
Прочтите книгу "Язык Программирования C++" Стенли Липпмана.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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