Функция any_of
Эта функция проверяет заданный диапазон, если хотя бы один элемент удовлетворяет заданному свойству, указанному в функции. Возвращает
В приведенном выше коде -6 делает условие положительным.
Вывод: There exists a negative element
➡️ @cpp_geek
Эта функция проверяет заданный диапазон, если хотя бы один элемент удовлетворяет заданному свойству, указанному в функции. Возвращает
true
, если хотя бы один элемент удовлетворяет свойству, иначе возвращает false
.В приведенном выше коде -6 делает условие положительным.
Вывод: There exists a negative element
➡️ @cpp_geek
👍2
Функция unique
unique используется для удаления дубликатов любого элемента, присутствующего последовательно в диапазоне
➡️ @cpp_geek
unique используется для удаления дубликатов любого элемента, присутствующего последовательно в диапазоне
[first, last)
. Он выполняет эту задачу для всех подгрупп, присутствующих в диапазоне, имеющих один и тот же элемент, присутствующий последовательно.➡️ @cpp_geek
👍2
Функция all_of
Эта функция работает со всем диапазоном элементов массива и может сэкономить время на запуск цикла для проверки каждого элемента по одному. Он проверяет заданное свойство для каждого элемента и возвращает
В приведенном выше коде отрицательный элемент -6 отрицает условие и возвращает ложь.
➡️ @cpp_geek
Эта функция работает со всем диапазоном элементов массива и может сэкономить время на запуск цикла для проверки каждого элемента по одному. Он проверяет заданное свойство для каждого элемента и возвращает
true
, когда каждый элемент в диапазоне удовлетворяет указанному свойству, иначе возвращает false
.В приведенном выше коде отрицательный элемент -6 отрицает условие и возвращает ложь.
➡️ @cpp_geek
👍5
std::string класс в C++
Класс string хранит символы как последовательность байтов с возможностью доступа к каждому символу. Рассмотрим три простые функции:
1.
2.
3.
➡️ @cpp_geek
Класс string хранит символы как последовательность байтов с возможностью доступа к каждому символу. Рассмотрим три простые функции:
1.
getline()
- функция используется для помещения потока символов, введенных пользователем, в память объекта.2.
push_back()
- функция используется для добавления символа в конец строки.3.
pop_back()
- введенная в C++11 (для строк), эта функция используется для удаления последнего символа из строки.➡️ @cpp_geek
👍7
Функции вместимости в строках
1.
2.
3.
4.
➡️ @cpp_geek
1.
capacity()
- функция возвращает ёмкость памяти, выделенную для строки, которая может быть равной или больше, чем размер самой строки. Дополнительное пространство выделяется таким образом, чтобы при добавлении новых символов в строку операции могли выполняться эффективно.2.
resize()
- функция изменяет размер строки, его можно увеличивать или уменьшать.3.
length()
- функция возвращает длину строки.4.
shrink_to_fit()
- функция уменьшает ёмкость памяти строки, делает ее равной минимально возможной. Эта операция полезна для экономии дополнительной памяти, когда мы уверены, что больше не нужно добавлять символы.➡️ @cpp_geek
👍8
Функция unique
unique используется для удаления дубликатов любого элемента, присутствующего последовательно в диапазоне [first, last). Он выполняет эту задачу для всех подгрупп, присутствующих в диапазоне, имеющих один и тот же элемент, присутствующий последовательно.
➡️ @cpp_geek
unique используется для удаления дубликатов любого элемента, присутствующего последовательно в диапазоне [first, last). Он выполняет эту задачу для всех подгрупп, присутствующих в диапазоне, имеющих один и тот же элемент, присутствующий последовательно.
➡️ @cpp_geek
👍2
Токенизация строки
Токенизация строки означает разделение строки относительно некоторого разделителя (разделителей). Есть много способов этого добиться.
Рассмотрим пример с функцией strtok(). Она разбивает строку по указанным разделителям и должна быть вызвана в цикле, на каждой итерации возвращая следующую часть. В конце возвращает NULL
➡️ @cpp_geek
Токенизация строки означает разделение строки относительно некоторого разделителя (разделителей). Есть много способов этого добиться.
Рассмотрим пример с функцией strtok(). Она разбивает строку по указанным разделителям и должна быть вызвана в цикле, на каждой итерации возвращая следующую часть. В конце возвращает NULL
➡️ @cpp_geek
👍3
Алгоритм lexicographic_compare
Совершает лексикографическое сравнение 2 диапазонов
Лексикографическое сравнение - это операция со следующими свойствами:
1)Два диапазона сравниваются поэлементно.
2)Первый элемент несовпадения определяет, какой диапазон лексикографически меньше или больше другого.
3)Если один диапазон является префиксом другого, более короткий диапазон лексикографически меньше другого.
4)Если два диапазона имеют эквивалентные элементы и имеют одинаковую длину, тогда диапазоны лексикографически равны.
5)Пустой диапазон лексикографически меньше любого непустого диапазона.
6)Два пустых диапазона лексикографически равны.
➡️ @cpp_geek
Совершает лексикографическое сравнение 2 диапазонов
Лексикографическое сравнение - это операция со следующими свойствами:
1)Два диапазона сравниваются поэлементно.
2)Первый элемент несовпадения определяет, какой диапазон лексикографически меньше или больше другого.
3)Если один диапазон является префиксом другого, более короткий диапазон лексикографически меньше другого.
4)Если два диапазона имеют эквивалентные элементы и имеют одинаковую длину, тогда диапазоны лексикографически равны.
5)Пустой диапазон лексикографически меньше любого непустого диапазона.
6)Два пустых диапазона лексикографически равны.
➡️ @cpp_geek
👍3
Функция strrchr()
В C++ strrchr() - это предопределенная функция, используемая для обработки строк. Эта функция возвращает указатель на всю строку после последнего появления заданного символа. Символ, последнее вхождение которого мы хотим найти, передается в качестве второго аргумента функции, а строка, в которой мы должны найти этот символ, передается в качестве первого аргумента функции.
В примере кода на картинке мы используем функцию для того, чтобы найти порядковый номер символа в заданной строке.
➡️ @cpp_geek
В C++ strrchr() - это предопределенная функция, используемая для обработки строк. Эта функция возвращает указатель на всю строку после последнего появления заданного символа. Символ, последнее вхождение которого мы хотим найти, передается в качестве второго аргумента функции, а строка, в которой мы должны найти этот символ, передается в качестве первого аргумента функции.
В примере кода на картинке мы используем функцию для того, чтобы найти порядковый номер символа в заданной строке.
➡️ @cpp_geek
👍3
Некоторые различия между ссылками и указателями
1. Указатель может быть объявлен void, а ссылка - никогда. Пример на картинке.
2. Переменная-указатель может иметь несколько уровней вложенности, то есть, например, бывают одиночные указатели, двойные указатели, тройные указатели. Ссылка же имеет только один единственный уровень вложенности.
3. Ссылочная переменная не может быть обновлена.
➡️ @cpp_geek
1. Указатель может быть объявлен void, а ссылка - никогда. Пример на картинке.
2. Переменная-указатель может иметь несколько уровней вложенности, то есть, например, бывают одиночные указатели, двойные указатели, тройные указатели. Ссылка же имеет только один единственный уровень вложенности.
3. Ссылочная переменная не может быть обновлена.
➡️ @cpp_geek
👍2
Сonstexpr
Допустим, у вас есть выражение, значение которого нужно вычислить и которое не будет меняться после этого. Вы можете вычислить значение заранее и использовать его как макрос. Или, как предлагает C++11, вы можете использовать constexpr.
Программисты сокращают время работы программы насколько возможно. Например, некоторые операции перекладываются на компилятор.
Код выше — довольно частый пример использования constexpr.
Так как мы объявили функцию вычисления чисел Фибоначчи как constexpr, компилятор вычислит значение fib(20) во время компиляции. Тогда после компиляции строка const long long bigval = fib(20); будет заменена на const long long bigval = 2432902008176640000.
➡️ @cpp_geek
Допустим, у вас есть выражение, значение которого нужно вычислить и которое не будет меняться после этого. Вы можете вычислить значение заранее и использовать его как макрос. Или, как предлагает C++11, вы можете использовать constexpr.
Программисты сокращают время работы программы насколько возможно. Например, некоторые операции перекладываются на компилятор.
Код выше — довольно частый пример использования constexpr.
Так как мы объявили функцию вычисления чисел Фибоначчи как constexpr, компилятор вычислит значение fib(20) во время компиляции. Тогда после компиляции строка const long long bigval = fib(20); будет заменена на const long long bigval = 2432902008176640000.
➡️ @cpp_geek
👍3