С++ для начинающих

       

Алгоритм includes()


template< class InputIterator1, class InputIterator2 >

bool

includes( InputIterator1 first1, InputIterator1 last1,

          InputIterator2 first2, InputIterator2 last2 );

template< class InputIterator1, class InputIterator2,

          class Compare >

bool

includes( InputIterator1 first1, InputIterator1 last1,

          InputIterator2 first2, InputIterator2 last2,

          Compare comp );

includes() проверяет, каждый ли элемент последовательности [first1,last1) входит в последовательность [first2,last2). Первый вариант предполагает, что последовательности отсортированы в порядке, определяемом оператором “меньше”; второй – что порядок задается параметром-типом comp.

#include <algorithm>

#include <vector>

#include <iostream.h>

          

int main()

{

           int ia1[] = { 13, 1, 21, 2, 0, 34, 5, 1, 8, 3, 21, 34 };

           int ia2[] = { 21, 2, 8, 3, 5, 1 };

                 

           // алгоритму includes следует передавать отсортированные контейнеры

           sort( ia1, ia1+12 ); sort( ia2, ia2+6 );

           // печатает: каждый элемент ia2 входит в ia1? Да

           bool res = includes( ia1, ia1+12, ia2, ia2+6 );

           cout << "каждый элемент ia2 входит в ia1? "

                << (res ? "Да" : "Нет") << endl;

           vector< int, allocator > ivect1( ia1, ia1+12 );

           vector< int, allocator > ivect2( ia2, ia2+6 );

           // отсортирован в порядке убывания

           sort( ivect1.begin(), ivect1.end(), greater<int>() );

           sort( ivect2.begin(), ivect2.end(), greater<int>() );

                 

           res = includes( ivect1.begin(), ivect1.end(),

                     ivect2.begin(), ivect2.end(),

                     greater<int>() );

           // печатает: каждый элемент ivect2 входит в ivect1? Да

           cout << "каждый элемент ivect2 входит в ivect1? "

                << (res ? "Да" : "Нет") << endl;

}



Содержание раздела