Другое отличие между auto
и auto&
в этом контексте заключается в том, что auto&
позволит вам изменить значение в векторе.Это может быть нежелательной ошибкой, ожидающей своего появления.В идеале, если вы собираетесь использовать ссылку только для чтения, вы должны взять константную ссылку: const auto &
Преимущество использования ссылки, когда вектор содержит объекты, которые являются более значительными, чем просто числовой или указательТип это не будет скопировать весь объект во временный.Если объект имеет какую-либо глубокую семантику копирования или, возможно, является shared_ptr, тогда могут быть значительные издержки, которые полностью исключаются.
Для основного типа копия обычно очень быстрая, поэтому предпочтительна одна копия, новы можете ожидать, что оптимизатор компилятора сделает «правильную вещь», если его попросят сослаться на фундаментальную, а затем использовать эту ссылку много раз, поэтому для программирования шаблонов вы должны предпочесть const-ref над копией, чтобы сохранить код простым, когда вы нене знаю тип.