РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
16 of 815 menu

Ключевое слово auto

Ключевое слово auto заставляет компилятор самостоятельно определить тип переменной на основе выражения, которым она инициализируется. При этом тип выводится один раз на этапе компиляции, а сама переменная остаётся строго типизированной - изменить её тип в дальнейшем нельзя. Обязательным условием использования auto является наличие инициализатора: без него компилятор не сможет вывести тип.

Особенно удобно auto при работе с длинными именами типов, итераторами контейнеров и лямбда-выражениями, тип которых порой невозможно записать вручную.

Синтаксис

auto name = value; auto name{value}; auto name = expression;

Пример

Давайте выведем тип переменной x с помощью оператора typeid и сравним его с типом int:

#include <iostream> #include <typeinfo> using namespace std; int main() { auto x = 5; cout << (typeid(x) == typeid(int)) << endl; return 0; }

Результат выполнения кода:

1

Пример

Ключевое слово auto удобно применять для перебора элементов контейнера, не записывая длинное имя типа итератора:

#include <iostream> #include <vector> using namespace std; int main() { vector<int> vec = {1, 2, 3, 4, 5}; for (auto it = vec.begin(); it != vec.end(); ++it) { cout << *it << " "; } cout << endl; return 0; }

Результат выполнения кода:

1 2 3 4 5

Пример

При использовании auto совместно с const и ссылками важно помнить, что auto по умолчанию отбрасывает ссылку и квалификатор const. Давайте сравним два случая:

#include <iostream> #include <typeinfo> using namespace std; int main() { const int a = 5; auto b = a; auto& c = a; cout << (typeid(b) == typeid(int)) << endl; cout << (typeid(c) == typeid(const int)) << endl; return 0; }

Результат выполнения кода:

1 1

Смотрите также

  • ключевое слово decltype,
    которое получает тип выражения
  • ключевое слово const,
    которое делает переменную неизменяемой
  • ключевое слово constexpr,
    которое вычисляет значение на этапе компиляции
  • оператор typeid,
    который возвращает информацию о типе
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить