STL容器的并集(set 您所在的位置:网站首页 补集与交集的区别在哪 STL容器的并集(set

STL容器的并集(set

2024-07-09 17:46| 来源: 网络整理| 查看: 265

集合的交集并集和差集并不是只能用于set对象,STL提供了支持这些操作的算法,它们是通用函数。然而所有set对象都自动满足使用这些算法的先决条件—容器必须先经过排序。 再三注意,使用这三个函数之前,容器必须先进行排序。

set_union()set_intersection()set_difference() 这三个函数的接口都相同,接受五个迭代器参数。前两个迭代器定义了第一个容器的区间,接下来两个迭代器定义了第二个容器的区间,最后一个迭代器是输出迭代器,指出将结果集合复制到什么位置。这几个函数的前四个参数一样,只有第五个参数有多重版本。

EX1:set_union(A.begin(),A.end(),B.begin(),B.end(),inserter( C1 , C1.begin() ) ); 前四个参数依次是第一的集合的头尾,第二个集合的头尾。第五个参数的意思是将集合A、B取合集后的结果存入集合C中。

EX2:set_union(A.begin(),A.end(),B.begin(),B.end(),ostream_iterator(cout," “));这里的第五个参数的意思是将A、B取合集后的结果直接输出,(cout," ")双引号里面是输出你想用来间隔集合元素的符号或是空格。

下面是set_union的原型: template OutputIterator set_union( InputIterator1_First1 , InputIterator1_Last1 , InputIterator2_First2 , InputIterator2_Last2 , OutputIterator_Result ); 链接: set_union.

// set_union example #include // std::cout #include // std::set_union, std::sort #include // std::vector int main () { int first[] = {5,10,15,20,25}; int second[] = {50,40,30,20,10}; std::vector v(10); // 0 0 0 0 0 0 0 0 0 0 std::vector::iterator it; std::sort (first,first+5); // 5 10 15 20 25 std::sort (second,second+5); // 10 20 30 40 50 it=std::set_union (first, first+5, second, second+5, v.begin()); // 5 10 15 20 25 30 40 50 0 0 v.resize(it-v.begin()); // 5 10 15 20 25 30 40 50 std::cout 50,40,30,20,10}; std::vector v(10); // 0 0 0 0 0 0 0 0 0 0 std::vector::iterator it; std::sort (first,first+5); // 5 10 15 20 25 std::sort (second,second+5); // 10 20 30 40 50 it=std::set_intersection (first, first+5, second, second+5, v.begin()); // 10 20 0 0 0 0 0 0 0 0 v.resize(it-v.begin()); // 10 20 std::cout 50,40,30,20,10}; std::vector v(10); // 0 0 0 0 0 0 0 0 0 0 std::vector::iterator it; std::sort (first,first+5); // 5 10 15 20 25 std::sort (second,second+5); // 10 20 30 40 50 it=std::set_difference (first, first+5, second, second+5, v.begin()); // 5 15 25 0 0 0 0 0 0 0 v.resize(it-v.begin()); // 5 15 25 std::cout "metal","any","food","elegant","deliver","for" }; vector result; vector::iterator it; ostream_iterator out(cout, " "); //使用前必须先排序 sort(set1.begin(), set1.end()); sort(set2.begin(), set2.end()); copy(set1.begin(), set1.end(),out);//buffoon can for for heavy thinkers cout "buffoon","thinkers","for","heavy","can","for" }; vector set2{ "metal","any","food","elegant","deliver","for" }; vector result; vector::iterator it; ostream_iterator out(cout, " "); insert_iterator inserter(result,result.begin()); //使用前必须先排序 sort(set1.begin(), set1.end()); sort(set2.begin(), set2.end()); copy(set1.begin(), set1.end(),out);//buffoon can for for heavy thinkers cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有