0:00
[БЕЗ_ЗВУКА] Свежие новости!
Недавно, буквально в процессе нашей работы над курсом,
комитет по стандартизации языка C++ утвердил новый стандарт — C++17.
Говоря простым языком, специальный комитет утвердил новые возможности,
новые «фичи» для языка C++.
Здесь есть, правда, некоторая небольшая проблема.
К сожалению, между тем, как эти изменения появляются на бумаге в стандарте языка
C++, и тем, как они появляются в реальных компиляторах (я напомню,
компилятор — это специальная программа,
которая обрабатывает ваш код и переводит в понятный для компьютера язык), так вот,
между тем, как изменения доезжают до свежих версий компиляторов,
проходит некоторое время, иногда довольно значительное.
Более того, свежие версии компиляторов тоже не всегда просто самому
самостоятельно скачать, установить и затем использовать.
Так что должно пройти некоторое время, чтобы они появились в тестирующих
системах, в дистрибутивах сред разработки и так далее.
Тем не менее, мы хотим вам рассказать про одну такую свежую возможность.
Вы можете спросить: почему?
Вы ведь не можете ее попробовать, с ходу написать на ней какой-то код,
скомпилировать, запустить.
Для этого есть две причины.
Во-первых, хочется держать вас в курсе свежих изменений.
Все-таки приятно осознавать, что язык развивается,
и вот вы уже скоро сможете писать чуть более простой понятный код.
Во-вторых, все-таки есть возможность проверить, по крайней мере,
будет ли компилироваться какой-то код в свежей версии компилятора.
Для этого можно использовать разные ресурсы, например,
ресурс https://gcc.godbolt.org/.
Мы можем на него зайти, и что мы здесь видим?
Мы здесь видим окно для ввода обычного кода на C++,
справа есть панель выбора версий компилятора.
Здесь достаточно не думать и выбрать самую свежую версию компилятора gcc.
Вот версия gcc 7, еще даже не вышедшая, тем не менее, ее уже можно попробовать.
И давайте установим специальный флаг компиляции, специальную опцию
передадим компилятору, чтобы он знал, что вы хотите писать код под новым стандартом.
Достаточно написать −−std=c++17 — вот такую магическую строчку.
И теперь я могу, наконец-то, показать вам одну полезную возможность.
Вот у вас был словарь.
Вы могли по нему проитерироваться.
Давайте я для примера создам какой-то словарь из строчек в целые числа,
как-то его проинициализирую, например,
у меня будут значения цифр по их названиям в английском языке.
Вот у меня простейший словарь.
Чтобы по нему проитерироваться, мы писали for
(const auto& item : m),
и здесь могли писать, соответственно, item.first и item.second.
Я никуда не вывожу, потому что все равно этот код не запускается,
а только компилируется.
Ну мы могли так написать.
Вот у меня сразу же этот сервис скомпилировал этот код,
справа появился соответствующий код на ассемблере, понятном компьютеру.
Мы не будем туда смотреть, просто будем проверять, компилируется ли код.
Я, например, могу написать некомплирующийся код, и мне этот сервис
покажет, что у меня в коде есть ошибка вот конкретно в этой строчке.
Он скажет: «Ты, наверное, опечатался в названии метода, ты написал secon,
а имел в виду second».
Ну ладно, не будем расстраивать компилятор.
Итак, в чем же новая возможность?
Вот сейчас есть явная проблема в этом месте.
Мы перебираем какой-то непонятный тип с полями first и second,
должны как-то назвать эту переменную.
Более того, мы здесь должны в теле функции либо помнить, что first — это ключ,
а second — это значение, либо завести временные переменные, которые будут
называться «ключ», и проинициализировать item.first, и «значение» value,
которое будет проинициализировано item.value.
Теперь, начиная с нового стандарта C++, можно будет писать более понятный код.
Как именно?
Мы вот здесь, вместо одной переменной item,
объявим сразу две переменные в квадратных скобках — ключ и значение,
и вот такой парой переменных проитерируемся по нашему словарю.
И в теле этой функции я могу теперь использовать
переменную key и использовать переменную value.
Я пишу их через запятую, просто показывая, что у меня есть такие переменные.
Итак, у меня код успешно скомпилировался.
Теперь, если к вам в руки вдруг попадет компилятор gcc версии 7,
вы сможете проставить ему такой флаг компиляции и вот этот код запустить.
Вот так вот легко можно будет итерироваться по словарю.
Как только эту новую возможность можно будет реально попробовать,
пощупать в среде разработки, мы вам обязательно расскажем.
А пока что просто будьте знакомы с новой удобной, приятной возможностью языка C++.