Senior C++ Developer – Telegram
Senior C++ Developer
12.1K subscribers
1.38K photos
3 videos
620 links
Изучаем C++.

По вопросам сотрудничества: @adv_and_pr

РКН: https://www.gosuslugi.ru/snet/676e9a1e4e740947beca35ba
Download Telegram
Друзья, с наступающим Новым годом! 🎄
Спасибо, что вы с нами.

2025-й отлично показал, как быстро меняется индустрия: за год вышли новые думающие модели, которые сильно прокачали кодинг, анализ и мультимодальность.

Пусть 2026 принесёт вам спокойные релизы без ночных авралов, понятные ТЗ, сильные команды и проекты, которыми реально хочется гордиться. Пусть баги ловятся быстро, деплой проходит с первого раза, а нейросети становятся не магией, а надёжным инструментом в вашем рабочем наборе 😄
Счастья, здоровья и стабильного интернета — увидимся в новом году! 🚀💻🎉
Алгоритм generate

Используется для генерации чисел на основе функции генератора, а затем присваивает эти значения элементам в контейнере в диапазоне [first, last).
#вопросы_с_собеседований
Сколько раз будет выполняться этот цикл?

Если бы вы сказали 300, а i был объявлен как int, вы были бы правы. Но поскольку i объявлен как unsigned char, правильный ответ – зацикливание (бесконечный цикл).

Объясняем. Выражение 2 * half_limit будет повышаться до int (на основе правил преобразования C++) и заимеет значение 300. Но так как i – это unsigned char, он пересматривается по 8-битному значению, которое после достижения 255 будет переполняться, поэтому вернется к 0, и цикл будет продолжаться вечно.
Пчела на работе, разработка игр на SFML C++

Пчела на работе – простая компьютерная игра, написанная на С++ используя мультимедийную библиотеку SFML.

Смотреть статью
Алгоритм is_sorted_until

Используется для определения первого несортированного элемента в диапазоне [first, last). Он возвращает итератор к первому несортированному элементу в диапазоне, поэтому все элементы между первым и возвращенным итератором сортируются.

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

Вы можете определить свои собственные исключения, наследуя и переопределяя функциональные возможности класса исключений. Ниже приведен пример, который показывает, как вы можете использовать класс std :: exception для реализации своего собственного исключения стандартным способом

Это приведет к следующему результату -
MyException caught
C++ Exception

Здесь what() - это открытый метод, предоставляемый классом исключений, и он был переопределен всеми дочерними классами исключений. Это возвращает причину исключения.
#вопросы_с_собеседований
Сколько раз будут выполняться циклы внутри программы?

Ответ: в первом случае цикл не выполнится никогда, а во втором случае будет выполняться бесконечно.

Объяснение:
В первом цикле условие прекращения цикла имеет тип беззнакового char, значит, у нас присвоение n 256 вызовет переполнение и n станет равным 0. Цикл превратится в for(unsigned char i = 0; i < 0; ++i), а, значит, условие цикла не выполняется, и мы даже не войдём в тело цикла. Во втором цикле другая ситуация, он превращается в for(unsigned char i = 0; i < 256; ++i), и так как i не может быть больше, чем 255, то условие цикла будет выполняться всегда.
Узнаем версию C++

Можно использовать макрос __cplusplus для определения версии C++. Например, если препроцессор увидит значение __cplusplus, равное 199711L, это означает, что используется C++98; значение 201103L указывает на C++11 и так далее.
Функция resize

Изменяет размер контейнера так, чтобы он содержал n элементов.

Если n меньше текущего размера контейнера , содержимое сокращается до первых n элементов, удаляя все остальные (и уничтожая их).

Если n больше текущего размера контейнера , содержимое расширяется, вставляя в конце столько элементов, сколько необходимо для достижения размера n . Если указан val , новые элементы инициализируются как копии val , в противном случае они инициализируются значением.

Если n также больше, чем текущая вместимость контейнера, происходит автоматическое перераспределение выделенного пространства для хранения.
Алгоритм stable_partition

Упорядочивает последовательность, определенную параметрами start и end, так, чтобы все элементы, для которых предикат возвращал true, предшествовали тем, для которых предикат возвращает false. Разметка стабильная. Это означает, что относительный порядок последовательности сохраняется.
Алгоритм upper_bound

Он возвращает итератор, указывающий на первый элемент в диапазоне [first, last), который больше значения, или last, если такой элемент не найден.

Элементы в диапазоне должны быть уже отсортированы или, по крайней мере, разделены по значению val.
Алгоритм merge

Объединяет две отсортированные последовательности, ограниченные диапазонами [first1,last1) и [first2,last2), в единую отсортированную последовательность, начинающуюся с позиции result.

Шаблон:
merge (initer1 beg1, initer1 end1,
initer2 beg2, initer2 end2,
outiter res).
Как вывести в консоль числа от 1 до 100 без рекурсии и циклов?

В этой программе используется концепция метапрограммирования шаблонов.
Могут ли ссылки отсылать к недопустимому местоположению в памяти в C++?

В C++ ссылки более безопасны, чем указатели, потому что ссылки должны быть инициализированы, и их нельзя изменить, чтобы ссылаться на что-то другое после инициализации. Но есть исключения, когда у нас могут быть недействительные ссылки.

Но есть пара исключений, когда у нас могут быть недействительные ссылки. Они приведены на картинке.
Функция map::at()

Map - это контейнер в STL, который используется для хранения элементов в виде пары ключ-значение. Внутренне элементы map всегда сортируются по ее ключу. Карты в основном реализованы в виде бинарных деревьев поиска.

Функция map::at() используется для возврата ссылки на элемент, связанный с ключом k.
Вычисление количества цифр числа

Чтобы вычислить количество цифр в числе, вместо цикла мы можем эффективно использовать log.

В нашем примере мы получаем, что количество цифр числа 2468 равно 4.
Монадическая композиция Expected в C++

Здесь речь пойдёт о трюке, который ещё больше имитирует код под исключения C++.

Смотреть статью
Что нам не нравится в C++

Смотреть статью