集合set
,是一个无序不重复元素集, 可用于消除重复元素。
支持union
(并), intersection
(交), difference
(差)和sysmmetric difference
(对称差集)等数学运算。程序员
STL
提供了上面这些经常使用的数学运算算法,C++
程序员应该熟练掌握它们,但它们也只是咱们处理集合算法的冰山一角,下面咱们对它们展开介绍。算法
std::set_union(A.begin(), A.end(), B.begin(), B.end(), std::back_inserter(results));
std::set_intersection(A.begin(), A.end(), B.begin(), B.end(), std::back_inserter(results));
bool UincludesA = std::includes(begin(U), end(U), begin(A), end(A));
std::set_difference(A.begin(), A.end(), B.begin(), B.end(), std::back_inserter(results));
std::set_symmetric_difference(A.begin(), A.end(), B.begin(), B.end(), std::back_inserter(results));
须要注意的是,前面全部的算法都要求输入的数据是排序好的。spa
O(n)
,而不是O(nlogn)