Например:
#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>, поэтому он работает медленнее.
Комментариев нет:
Отправить комментарий