includes
Материал из cppreference.com
Синтаксис:
#include <algorithm> template< typename InIterA, typename InIterB > bool includes( InIterA start1, InIterA end1, InIterB start2, InIterB end2 ); template< typename InIterA, typename InIterB, typename StrictWeakOrdering > bool includes( InIterA start1, InIterA end1, InIterB start2, InIterB end2, StrictWeakOrdering cmp );
Алгоритм includes() возвращает true, если каждый элемент из диапазона [start2,end2) есть в диапазоне [start1,end1). Оба диапазона должны быть отсортированы по возрастанию. Не существует требования, чтобы каждый элемент из диапазона [start1,end1) или [start2,end2) был уникальным (встречался только один раз). Если какой-либо элемент встречается n раз в диапазоне [start2,end2), то в диапазоне [start1,end1) он должен встречаться тоже n раз.
По умолчанию для сравнения элементов используется оператор <. Если точность мала, используется объект-функция cmp.
includes() работает за линейное время.
#include <iostream> #include <vector> #include <list> #include <algorithm> int main() { std::vector<int> vec; for (int i = 0; i < 10; ++i) vec.push_back(i); std::list<int> lst; lst.push_back(2); lst.push_back(4); lst.push_back(6); if (std::includes(vec.begin(), vec.end(), lst.begin(), lst.end())) std::cout << "lst is a subset of vec." << std::endl; else std::cout << "lst is NOT a subset of vec." << std::endl; return 0; }
Смотрите также: set_difference, set_intersection, set_symmetric_difference, set_union