1. set_union

    算法set_union可构造S1、S2的并集。此集合内含S1或S2内的每个元素。

    S1、S2及其并集都是以排序区间表示。返回值是一个迭代器。指向输出区间的尾端。

    因为S1和S2内的每一个元素都不需唯一,因此,假设某个值在S1出现n次。在S2出现m次,那么该值再输出区间中会出现max(m,n)次,当中n个来自S1,其余来自S2。在STL
    set容器内。m小于等于1,n小于等于1。

    template <class InputIterator1,classInputIterator2,class OutputIterator>

    OutputIterator set_union(InputIterator1first1,InputIterator1 last1,

    InputIterator2 first2,InputIterator2 last2,

    OutputIterator result)

    {

    while(first1 != last1 && first2 != last2)

    {

    if(*first1 < *first2)

    {

    *result= *first1;

    ++first1;

    }

    elseif (*first2 < *first1)

    {

    *result= *first2;

    ++first2;

    }

    else

    {

    *result= *first1;

    ++first1;

    ++first2;

    }

    ++result;

    }

    return copy(first2,last2,copy(first1,last1,result));

    }

  2. set_intersection

    算法set_intersection可构造S1、S2的交集。此集合内含同一时候出现于S1、S2内的每个元素。S1、S2及其交集都是以排序区间表示。返回值为一个迭代器。指向输出区间的尾端。

    因为S1和S2内的每一个元素都不需唯一。因此。假设某个值在S1出现n次,在S2出现m次,那么该值再输出区间中出现min(m,n)次,而且所有来自S1。在STL
    set容器内,m小于等于1。n小于等于1。

    template <class InputIterator1,classInputIterator2,class OutputIterator>

    OutputIteratorset_intersection(InputIterator1 first1,InputIterator1 last1,

    InputIterator2 first2,InputIterator2 last2,

    OutputIterator result)

    {

    while(first1 != last1 && first2 != last2)

    {

    if(*first1 < *first2)

    {

    //*result= *first1;

    ++first1;

    }

    elseif (*first2 < *first1)

    {

    //*result= *first2;

    ++first2;

    }

    else

    {

    *result= *first1;

    ++first1;

    ++first2;

    ++result;

    }

    //++result;

    }

    //return copy(first2,last2,copy(first1,last1,result));

    }

  3. set_difference

    算法set_difference可构造S1、S2的差集。此集合内含“出现于S1但不出现于S2”的每个元素。S1、S2及其差集都是以排序区间表示。返回值为一个迭代器,指向输出区间的尾端。

    因为S1和S2内的每一个元素都不需唯一,因此假设某个值再S1出现n次,在S2出现m次。那么该值再输出区间中出现max(n-m,0)次,而且所有来自S1。在STL
    set容器内。m小于等于1。n小于等于1。

    template <class InputIterator1,classInputIterator2,class OutputIterator>

    OutputIteratorset_difference(InputIterator1 first1,InputIterator1 last1,

    InputIterator2 first2,InputIterator2 last2,

    OutputIterator result)

    {

    while(first1 != last1 && first2 != last2)

    {

    if(*first1 < *first2)

    {

    *result= *first1;

    ++first1;

    ++result;

    }

    elseif (*first2 < *first1)

    {

    //*result= *first2;

    ++first2;

    }

    else

    {

    //*result= *first1;

    ++first1;

    ++first2;

    //++result;

    }

    //++result;

    }

    //return copy(first2,last2,copy(first1,last1,result));

    return copy(first1,last2,result);

    }

  4. set_symmetric_difference

    算法set_symmetric_difference可构造S1、S2的对称差集。此集合内含“出现于S1但不出现于S2”以及“出现于S2但不出现于S1”的每个元素。S1、S2及其差集都是以排序区间表示。返回值为一个迭代器,指向输出区间的尾端。

    因为S1和S2内的每一个元素都不需唯一。因此假设某个值在S1出现n次,在S2出现m次,那么该值再输出区间中出现|m-n|次。

    假设n>m。输出区间内的最后n-m个元素将由S1复制而来,假设n<m则输出区间内的最后m-n个元素将由S2复制而来。在STL
    set容器内,m小于等于1。n小于等于1。

    template <class InputIterator1,classInputIterator2,class OutputIterator>

    OutputIteratorset_symmetric_difference(InputIterator1 first1,InputIterator1 last1,

    InputIterator2 first2,InputIterator2 last2,

    OutputIterator result)

    {

    while(first1 != last1 && first2 != last2)

    {

    if(*first1 < *first2)

    {

    *result= *first1;

    ++first1;

    ++result;

    }

    elseif (*first2 < *first1)

    {

    *result= *first2;

    ++first2;

    ++result;

    }

    else

    {

    //*result= *first1;

    ++first1;

    ++first2;

    //++result;

    }

    //++result;

    }

    return copy(first2,last2,copy(first1,last1,result));

    //return copy(first1,last2,result);

    }

版权声明:本文博主原创文章,博客,未经同意不得转载。

集装箱set相关算法的更多相关文章

  1. 二叉树-你必须要懂!(二叉树相关算法实现-iOS)

    这几天详细了解了下二叉树的相关算法,原因是看了唐boy的一篇博客(你会翻转二叉树吗?),还有一篇关于百度的校园招聘面试经历,深刻体会到二叉树的重要性.于是乎,从网上收集并整理了一些关于二叉树的资料,及 ...

  2. 数据结构(C语言版)顺序栈相关算法的代码实现

    这两天完成了栈的顺序存储结构的相关算法,包括初始化.压栈.出栈.取栈顶元素.判断栈是否为空.返回栈长度.栈的遍历.清栈.销毁栈.这次的实现过程有两点收获,总结如下: 一.清楚遍历栈的概念 栈的遍历指的 ...

  3. [联赛可能考到]图论相关算法——COGS——联赛试题预测

    COGS图论相关算法 最小生成树 Kruskal+ufs int ufs(int x) { return f[x] == x ? x : f[x] = ufs(f[x]); } int Kruskal ...

  4. [java,2017-05-15] 内存回收 (流程、时间、对象、相关算法)

    内存回收的流程 java的垃圾回收分为三个区域新生代.老年代. 永久代 一个对象实例化时 先去看伊甸园有没有足够的空间:如果有 不进行垃圾回收 ,对象直接在伊甸园存储:如果伊甸园内存已满,会进行一次m ...

  5. 【STL学习】堆相关算法详解与C++编程实现(Heap)

    转自:https://blog.csdn.net/xiajun07061225/article/details/8553808 堆简介   堆并不是STL的组件,但是经常充当着底层实现结构.比如优先级 ...

  6. TCP系列39—拥塞控制—2、拥塞相关算法及基础知识

    一.拥塞控制的相关算法 早期的TCP协议只有基于窗口的流控(flow control)机制而没有拥塞控制机制,因而易导致网络拥塞.1988年Jacobson针对TCP在网络拥塞控制方面的不足,提出了& ...

  7. UCI机器学习库和一些相关算法(转载)

    UCI机器学习库和一些相关算法 各种机器学习任务的顶级结果(论文)汇总 https://github.com//RedditSota/state-of-the-art-result-for-machi ...

  8. 采样方法(二)MCMC相关算法介绍及代码实现

    采样方法(二)MCMC相关算法介绍及代码实现 2017-12-30 15:32:14 Dark_Scope 阅读数 10509更多 分类专栏: 机器学习   版权声明:本文为博主原创文章,遵循CC 4 ...

  9. 盘点十大GIS相关算法

    1.道格拉斯-普克算法(Douglas–Peucker) 道格拉斯-普克算法(Douglas–Peucker algorithm,亦称为拉默-道格拉斯-普克算法.迭代适应点算法.分裂与合并算法)是将曲 ...

随机推荐

  1. amazeui学习笔记--js插件(UI增强)--警告框Alert

    amazeui学习笔记--js插件(UI增强)--警告框Alert 一.总结 1.警告框基本样式:用am-alert声明div容器, <div class="am-alert" ...

  2. amazeui学习笔记--css(常用组件10)--导航条Topbar

    amazeui学习笔记--css(常用组件10)--导航条Topbar 一.总结 1. 导航条:就是页面最顶端的导航条:在容器上添加 .am-topbar class,然后按照示例组织所需内容.< ...

  3. java三大特性:封装、继承、多态

    Java三大特性之封装   一.定义 封装性指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部的信息,而是通过该类所提供的方法来实现对内部信息的操作和访问. 二.使用封装的好处: 1 ...

  4. (转)c++ 中的using namespace std是什么意思,什么时候用

    使用std命名空间 98年以后的c++语言提供一个全局的命名空间namespace,可以避免导致全局命名冲突问题.举一个实例,请注意以下两个头文件: // one.hchar func(char);c ...

  5. 【BZOJ 2119】股市的预测

    [链接]h在这里写链接 [题意]     给你一个长度为n的数组a[]     设b[i] = a[i+1]-a[i];     然后让你在b[i]里面找ABA的形式.     这里B的长度要求为m; ...

  6. 【redis,1】java操作redis: 将string、list、map、自己定义的对象保存到redis中

    一.操作string .list .map 对象 1.引入jar: jedis-2.1.0.jar   2.代码 /**      * @param args      */     public s ...

  7. 推荐一下《聊聊JVM》的专栏

    依照惯例新开了一个专栏后要单推一下.推荐一下<聊聊JVM的专栏>,网上关于JVM的文章太多,这个专栏希望能在已有的资料的基础上写出点新意,对一些重要的概念归纳总结,说说自己的观点.理解和实 ...

  8. [Nuxt] Setup a "Hello World" Server-Rendered Vue.js Application with the Vue-CLI and Nuxt

    Install: npm install -g vue-cli Init project: vue init nuxt/starter . Run: npm run dev Create a inde ...

  9. Android之RecyclerView简单使用(三)

    使用过ListView滴小伙伴都知道.ListView有这样一个属性android:divider,用来设置每一个item之间切割线滴属性.问题来了,那么RecyclerView这个控件有没有这个属性 ...

  10. 一、Github博客搭建之jekyll安装

    注意:以下步骤是FQ后操作的,需要了解FQ的可以移步 -> 枫叶主机 一.安装jekyll需要Ruby-2.1.0以上版本,本人是mac pro系统版本10.12.5(macOS Sierra) ...