C++ geek
2.38K subscribers
206 photos
1 video
4 links
Учим C/C++ на примерах
Download Telegram
Алгоритм distance

Возвращает расстояние до желаемой позиции от первого итератора. Эта функция очень полезна при поиске нужного нам индекса.

👉 @cpp_geek
Для чего нужен аллокатор и как создать свой собственный аллокатор?

Аллокатор это шаблонный класс, который отвечает за выделение памяти и создание объектов. По умолчанию все контейнера используют std::allocator<T>.
В языке c++ имеется так же возможность написать свой аллокатор. У своего алокатора должно быть такое объявление(см картинку).

👉 @cpp_geek
Какую проблему решает пространство имён?

Пространство имен — это идентификатор, предоставляющий несколько библиотек. Используется для устранения конфликтов имен, когда имя связано с двумя или более библиотеками. Включает внешние объявления библиотеки с уникальными пространствами имен, что исключает возможность конфликта.

👉 @cpp_geek
Алгоритм copy_if

Копирует из диапазона элементов те элементы, проверка которых на соответствие заданному условию дает значение true.

👉 @cpp_geek
Сортировка пузырьком

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

Формат входных данных:
На первой строке дано целое число n (1 ≤ n ≤ 1000) – количество элементов в массиве. На второй строке – сам массив. Гарантируется, что все элементы массива – различные целые числа, не превышающие по модулю 10^9.

Формат выходных данных:
Выведите одно число – количество обменов пузырьковой сортировки.

👉 @cpp_geek
Макрос watch

Макрос watch — один из самых полезных приёмов.

При отладке кода watch(переменная) выведет имя переменной и её значение.

👉 @cpp_geek
Итераторы в строках

1. begin() - возвращает итератор в начало строки.
2. end() - возвращает итератор в конец строки.
3. rbegin() - возвращает обратный итератор, указывающий на конец строки.
4. rend() - возвращает обратный итератор, указывающий на начало строки.

👉 @cpp_geek
В чем отличие overload и override?

Ответ:
overload - это перегрузка, два одинаковых имени функций с разными принимаемыми аргументами, override - это переопределение (с помощью таблицы виртуальных функций), изменение поведения функции в выведенном классе ( с помощью механизма виртуальных функций).

👉 @cpp_geek
Длина числа

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

👉 @cpp_geek
Алгоритмы all_of, any_of и none_of

Начиная с C ++ 11, в STL C ++ добавляются некоторые новые интересные алгоритмы. Эти алгоритмы работают с массивом и полезны для экономии времени во время кодирования и, следовательно, также полезны в конкурентном программировании.

👉 @cpp_geek
Алгоритм includes

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

👉 @cpp_geek
Алгоритм count_if

Алгоритм count_if выполняет подсчет количества выполнений условия в последовательности.

👉 @cpp_geek
Как проигрывать музыку с помощью C++

Полную инструкцию по работе с аудиозаписями на C++ можно найти здесь.

👉 @cpp_geek
Алгоритм merge

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

Шаблон:
merge (initer1 beg1, initer1 end1,
initer2 beg2, initer2 end2,
outiter res).


➡️ @cpp_geek
Быстрая сортировка

Отсортируйте заданный массив с помощью быстрой сортировки.

Формат входных данных:
Первая строка входных данных содержит одно натуральное число nn (1 ≤ n ≤ 10^5) – количество элементов в массиве. В следующей строке находятся элементы массива – n целых чисел, не превосходящих по абсолютной величине 10^9.

Формат выходных данных:
Выведите элементы массива в порядке неубывания.

➡️ @cpp_geek
Что лучше const или define?

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

У const есть тип, область видимости, можно взять адрес, создать константную ссылку на эту переменную.

Определенно, лучше использовать const, а не define.

➡️ @cpp_geek
Работа с файлами

Для того чтобы прочитать файл понадобится выполнить те же шаги, что и при записи в файл с небольшими изменениями:

1) создать объект класса ifstream и связать его с файлом, из которого будет производиться считывание;
2) прочитать файл;
3) закрыть файл.

➡️ @cpp_geek
Алгоритм set_symmetric_difference

Строит отсортированную последовательность из элементов, которые встречаются только в первой последовательности [first1, last1) или только во второй - [first2, last2).

➡️ @cpp_geek
Алгоритм nth_element

Перестраивает список таким образом, что элемент в n-й позиции — это тот элемент, который должен быть в этой позиции, если мы сортируем список.

➡️ @cpp_geek
assert()

assert() - макроопределение для вывода отладочных диагностических сообщений. Используется для включения в программу диагностических операторов и принимает один аргумент (int expression).

Аpгyмент expression должен быть выражением, которое принимает значение истина (не ноль), если программа работает так, как вы предполагаете.
Когда expression ложно (ноль), assert вызывает abort, предварительно выведя сообщение, показывающие, какая и где произошла ошибка:

assertion failed: expression, file filename, line lineno

➡️ @cpp_geek