[c罗]c++ STL set_difference set_intersection set_union 操作

更新时间:2021-07-22    来源:php函数    手机版     字体:

【www.bbyears.com--php函数】

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

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

set_symmetric_difference 求两个容器的差。

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

 

 代码如下

// set_symmetric_difference example

 #include <iostream>   // std::coutiostream>

 #include  // std::set_symmetric_difference, std::sort

 #include    // std::vector

   

 intmain () {

  intfirst[] = {5,10,15,20,25};

  intsecond[] = {50,40,30,20,10};

  std::vectorv(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'

   

  return0;

 }

 

本文来源:http://www.bbyears.com/jiaocheng/131352.html