千家信息网

如何操作c++STL中的set_difference和set_intersection以及set_union

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,如何操作c++STL中的set_difference和set_intersection以及set_union,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望
千家信息网最后更新 2025年01月21日如何操作c++STL中的set_difference和set_intersection以及set_union

如何操作c++STL中的set_difference和set_intersection以及set_union,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

STL algorithm的几个函数,使用的条件是有序容器,所以 vector在被sort了之后是可以使用的,set也是可以使用的。

set_difference 这个是求得在第一个容器中有,第二个容器中没有的。set_intersection 求两个容器的交, set_union 求两个容器的并。

set_symmetric_difference 求两个容器的差。

最后使用的时候注意要提前分配好最后的盛放容器,其大小最好是两个操作容器的和,然后需要根据返回的迭代器resize一下,看下面的例子。

// set_symmetric_difference example #include    // std::cout #include   // std::set_symmetric_difference, 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_symmetric_difference (first, first+5, second, second+5, v.begin());                         // 5 15 25 30 40 50 0 0 0 0  v.resize(it-v.begin());           // 5 15 25 30 40 50    std::cout << "The symmetric difference has " << (v.size()) << " elements:\n";  for (it=v.begin(); it!=v.end(); ++it)   std::cout << ' ' << *it;  std::cout << '\n';    return 0; }

看完上述内容,你们掌握如何操作c++STL中的set_difference和set_intersection以及set_union的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

0