C++ geek
3.57K subscribers
251 photos
2 videos
16 links
Учим C/C++ на примерах
Download Telegram
Алгоритм reverse_copy

Алгоритм копирует элементы из заданного диапазона, но в обратном порядке.

Принимает три параметра. Первые два параметра — это диапазон копируемых элементов, а третий параметр — начальная точка, из которой элементы копируются в обратном порядке.

➡️ @cpp_geek
Функция isalpha() в С++ проверяет, является ли данный символ буквой или нет.

Синтаксис:
isalpha(int ch).

Возвращаемое значение:
Функция возвращает ненулевое значение, если ch – буква и ноль, если ch не буква.

➡️ @cpp_geek
Могут ли статические функции быть виртуальными в C++?

В C++ статическая функция-член класса не может быть виртуальной.

Кроме того, статические функции-члены класса не могут быть const и volatile.

В примере кода приведены две функции, обе из которых не дадут программе скомпилироваться.

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

Совершает обмен элементами между диапазоном [first1, last1) и другим диапазоном, начинающимся с first2.

➡️ @cpp_geek
Объявление вложенных пространств имён

Избегайте вложенности пространств имён, а если не избежать, то объявляйте их так(см картинку).

Подробнее https://learn.microsoft.com/ru-ru/cpp/cpp/namespaces-cpp?view=msvc-160

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

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

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

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

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

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

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


➡️ @cpp_geek
Некоторые различия между ссылками и указателями

1. Указатель может быть объявлен void, а ссылка - никогда. Пример на картинке.

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

3. Ссылочная переменная не может быть обновлена.

➡️ @cpp_geek
Указатели с ключевыми словами const и volatile

Ключевые слова const и volatile изменяют то, как обрабатываются указатели. const указывает, что данные по указателю не могут быть изменены после инициализации; volatile указывает, что значение может быть изменено действиями, отличными от тех, которые указаны в пользовательском приложении.

volatile полезно для объявления объектов в общей памяти, к которым могут обращаться несколько процессов или для глобальных областей данных.

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

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

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

Сравнивает значение с верхней и нижней границей и возвращает ссылку на значение, если оно находится между границами, или ссылку на верхнюю или нижнюю границу, если значение выше или ниже, соответственно.

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

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

Он просто меняет значения элементов, на которые указывают итераторы. Если мы посмотрим на его внутреннюю работу, мы обнаружим, что эта функция сама использует std::swap() .

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

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

➡️ @cpp_geek
Неиспользуемые переменные

Подобный макрос есть, например, в cocos2d-x, там он называется CC_UNUSED_PARAM. Из недостатков: теоретически, он может работать не на всех компиляторах. Тем не менее, в cocos2d-x он для всех платформ определен абсолютно одинаково.

Для чего? Этот макрос позволяет избежать предупреждения о неиспользуемой переменной, а читающему код он как бы говорит: «тот кто писал это — знал, что переменная не используется, все в порядке».

➡️ @cpp_geek
Преобразование типа с плавающей точкой в целочисленный

Язык C++ не предоставляет примитивную операцию округления чисел с плавающей точкой. Самым простым методом преобразования числа с плавающей точкой x в ближайшее целое число n будет оператор(см на картинке).

Используя такой метод, если x будет точно посередине между двумя целыми числами, то n будет округлено в большую сторону. Например, 0,5 -> 1; 1,5 -> 2; -0,5 -> 0; -1,5 -> -1.

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

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

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

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

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

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

Синтаксис:
std :: move (first, last, result);

Перемещает элементы диапазона [first,last) в диапазон, начиная с позиции result.

Значение элементов в [first,last) массиве передается элементам, на которые указывает result. После вызова элементы в диапазоне [first,last) остаются в неопределенном, но допустимом состоянии.

➡️ @cpp_geek
-->«оператор»

Вы можете использовать
-->«оператор» в цикле while в качестве оператора «Переход к».

Например, вы можете печатать числа 7 6 5 4 3 2 1 с помощью цикла while следующим образом.

Примечание:
--> на самом деле это не оператор, а комбинация двух операторов --и >. Вышеупомянутое while то же самое while( (x--) > 0 ), что читается как «уменьшить x на 1, а затем сравнить результат с 0».

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

Алгоритм replace_if() используется для присвоения нового значения всем элементам в диапазоне [first, last), для которых функция IsOdd возвращает true.

➡️ @cpp_geek