Сравнение элементов

Сравнить элементы позволяют следующие функции:

  • all_of() — применяет пользовательскую функцию сравнения ко всем элементам контейнера. Возвращает значение true, если пользовательская функция для всех элементов вернула значение true или контейнер пустой, и false — в противном случае. Диапазон внутри контейнера задается с помощью двух итераторов. Проверим, все ли значения массива меньше четырех:
// #include <algorithm>
std::vector<int> arr = {1, 2, 3};
std::cout << std::boolalpha;
std::cout << std::all_of(arr.begin(), arr.end(),
                         [](const int &a){ return a < 4; })
          << std::endl; // true
  • any_of() — применяет пользовательскую функцию сравнения ко всем элементам контейнера. Возвращает значение true, если пользовательская функция хотя бы для одного элемента вернула значение true, и false — в противном случае. Диапазон внутри контейнера задается с помощью двух итераторов. Проверим, существует ли хотя бы один элемент, имеющий значение большее или равное трем:
// #include <algorithm>
std::vector<int> arr = {1, 2, 3};
std::cout << std::boolalpha;
std::cout << std::any_of(arr.begin(), arr.end(),
                         [](const int &a){ return a >= 3; })
          << std::endl; // true
  • none_of() — применяет пользовательскую функцию сравнения ко всем элементам контейнера. Возвращает значение true, если пользовательская функция для всех элементов вернула значение false или контейнер пустой, и false — в противном случае. Диапазон внутри контейнера задается с помощью двух итераторов. Проверим, все ли значения массива меньше четырех:
// #include <algorithm>
std::vector<int> arr = {1, 2, 3};
std::cout << std::boolalpha;
std::cout << std::none_of(arr.begin(), arr.end(),
                         [](const int &a){ return a >= 4; })
          << std::endl; // true
  • equal() — сравнивает элементы из диапазона, ограниченного итераторами first1 и last1, с элементами, начинающимися с позиции first2. Функция возвращает значение true, если элементы равны, и false — в противном случае. Формат функции:
#include <algorithm>
bool equal(first1, last1, first2[, binary_pred]);

Пример сравнения:

std::vector<int> arr1 = {1, 2, 3}, arr2 = {0, 2, 3};
std::cout << std::boolalpha;
std::cout << std::equal(arr1.begin(), arr1.end(), arr2.begin())
          << std::endl; // false
std::cout << std::equal(++arr1.begin(), arr1.end(),
                        ++arr2.begin())
          << std::endl; // true

По умолчанию сравнение производится с помощью оператора ==. В последнем параметре можно указать пользовательскую функцию сравнения:

std::vector<int> arr1 = {1, 2, 3}, arr2 = {1, 2, 3};
std::cout << std::boolalpha;
std::cout << std::equal(arr1.begin(), arr1.end(), arr2.begin(),
             [](const int &a, const int &b){ return a == b; })
          << std::endl; // true
  • lexicographical_compare() — сравнивает соответствующие пары элементов из двух диапазонов. Функция возвращает значение true, если диапазон между first1 и last1 меньше диапазона между first2 и last2, и false — если больше или диапазоны равны. Диапазоны могут быть разной длины. По умолчанию сравнение производится с помощью оператора <. В последнем параметре можно указать пользовательскую функцию сравнения. Формат функции:
#include <algorithm>
bool lexicographical_compare(first1, last1,
                             first2, last2[, comp]);

Пример сравнения:

std::string str1("abc"), str2("abcd");
std::cout << std::boolalpha;
std::cout << std::lexicographical_compare(
                  str1.begin(), str1.end(),
                  str2.begin(), str2.end())
          << std::endl; // true
std::cout << std::lexicographical_compare(
                  str1.begin(), str1.end(),
                  str2.begin(), --str2.end())
          << std::endl; // false
  • is_permutation() — сравнивает элементы из диапазона, ограниченного итераторами first1 и last1, с элементами, начинающимися с позиции first2. Функция возвращает значение true, если элементы равны, и false — в противном случае. В отличие от функции equal() элементы могут быть расположены в произвольном порядке. Формат функции:
#include <algorithm>
bool is_permutation(first1, last1, first2[, binary_pred]);

Пример сравнения:

std::vector<int> arr1 = {1, 2, 3}, arr2 = {3, 1, 2};
std::cout << std::boolalpha;
std::cout << std::is_permutation(arr1.begin(), arr1.end(),
                                 arr2.begin())
          << std::endl; // true

По умолчанию сравнение производится с помощью оператора ==. В последнем параметре можно указать пользовательскую функцию сравнения:

std::vector<int> arr1 = {1, 2, 3}, arr2 = {3, 1, 2};
std::cout << std::boolalpha;
std::cout << std::is_permutation(
             arr1.begin(), arr1.end(), arr2.begin(),
             [](const int &a, const int &b){ return a == b; })
          << std::endl; // true

Учебник C++ (Qt Creator и MinGW)
Учебник C++ (Qt Creator и MinGW) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов