Это, по-видимому, очень простой вопрос - мне недавно говорили, что использование инициализации стиля C++ лучше, чем традиционное (и более общее) назначение.Оптимизация определения итератора
Так этот код:
std::SomeSTLContainer::const_iterator it = container.begin();
std::SomeSTLContainer::const_iterator itEnd = container.end();
будет «медленнее» или менее эффективен, чем:
std::SomeSTLContainer::const_iterator it (container.begin());
std::SomeSTLContainer::const_iterator itEnd (container.end());
Я понимаю причину этого - первый пример вызывает строительство по умолчанию и инициализацию затем последующее задание а не конкретную конструкцию и прямое назначение во втором примере. Однако, на современных процессорах/компиляторах, действительно ли это имеет значение?
Ваш «Нет, это не относится» ко всему моему второму абзацу или просто «действительно ли это имеет значение?» вопрос? :) Если первый, можете ли вы установить меня прямо. – Konrad
это относится к разнице. Подождите, я его отредактирую. –
Одна из причин предпочесть вторую форму заключается в том, что, возможно, более четко сказано о том, что произойдет. Это помогает кому-то, кто читает код, понять, что будет использоваться конструктор копирования. –