@specsoftdev live:.cid.8e17e9b93cabb607 specsoftdev@gmail.com
std::includes
Актуально для C++23.

#include <algorithm>
Актуально на 2024-03-11.



Define overload #1
template<class InputIterator1, class InputIterator2>
constexpr bool
includes(InputIterator1 first1, InputIterator1 last1,
         InputIterator2 first2, InputIterator2 last2);

Проверяет, присутствуют ли все значения из последовательности [first2, last2] в последовательности [first1, last1].
Вернёт true если это так, иначе false.
Последовательности должны быть отсортированы с помощью оператора "<".
Example, possible implementation
Define overload #2
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2>
bool includes(ExecutionPolicy&& exec, ForwardIterator1 first1, ForwardIterator1 last1,
              ForwardIterator2 first2, ForwardIterator2 last2);

TODO
Example, possible implementation
Define overload #3
template<class InputIterator1, class InputIterator2, class Compare>
constexpr bool
includes(InputIterator1 first1, InputIterator1 last1,
         InputIterator2 first2, InputIterator2 last2, Compare comp);

Проверяет, присутствуют ли все значения из последовательности [first2, last2] в последовательности [first1, last1].
Вернёт true если это так, иначе false.
Сравнение элементов выполняется с помощью бинарного предиката.
Последовательности должны быть отсортированы с помощью должны быть отсортированы с помощью предиката comp.
Example, possible implementation
Define overload #4
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2, class Compare>
bool includes(ExecutionPolicy&& exec, ForwardIterator1 first1, ForwardIterator1 last1,
              ForwardIterator2 first2, ForwardIterator2 last2, Compare comp);

TODO
Example, possible implementation


Examples


Example 1:
#include <iostream>
#include <algorithm>
#include <set>

int main()
{
    std::multiset<int>
            set1 = {1, 2, 3, 3, 4, 6},
            set2 = {2, 4, 6},
            set3 = {2, 4, 5, 6};

    auto res1 = std::includes(std::begin(set1), std::end(set1), std::begin(set2), std::end(set2));
    auto res2 = std::includes(std::begin(set1), std::end(set1), std::begin(set3), std::end(set3));

    std::cout << std::boolalpha << res1 <<std::endl;
    std::cout << std::boolalpha << res2 <<std::endl;
    return 0;
}

true
false



Changelog

C++26
TODO
C++23
TODO
C++20
TODO
C++17
TODO
C++14
TODO
C++11
TODO


See also

TODO

This page was last modified on 2024-03-11