Например:
#include <map> #include <string> int main() { std::map<std::string, int> m; for(const auto &a : m) {} for(const std::pair<std::string, int> &a : m) {} return 0; }Вопрос: Какой вариант for быстрее? Ответ: Первый, т.к. auto& выводит корректный тип элемента, который для std::map<std::string, int> - std::pair<const std::string, int>, т.к. для std::map запрещено модифицировать ключ. Для второго for-а создаётся временный объект std::pair<std::string, int>, поэтому он работает медленнее.
Комментариев нет:
Отправить комментарий