◆ 常用的集合算法:

1、

1.1、第6讲 PPT.40

◆ set_union() :  构造一个有序序列,包含两个有序序列的并集。

1.2、第6讲 PPT.40

◆ set_intersection() :  构造一个有序序列,包含两个有序序列的交集。

1.3、第6讲 PPT.40

◆ set_difference() :  构造一个有序序列,该序列保留第一个有序序列中存在而第二个有序序列中不存在的元素。

ZC: VC6 测试代码:

 #ifdef WIN32
#pragma warning (disable: 4786)
#endif #include <string>
#include <vector>
#include <set> #include <algorithm> // 算法
#include <numeric> // 算法
#include <functional> // 算法 using namespace std; void main()
{
vector<int> vecIntA;
vecIntA.push_back();
vecIntA.push_back();
vecIntA.push_back();
vecIntA.push_back();
vecIntA.push_back(); vector<int> vecIntB;
vecIntB.push_back();
vecIntB.push_back();
vecIntB.push_back();
vecIntB.push_back();
vecIntB.push_back(); vector<int> vecIntC;
vecIntC.resize(); // ZC: 没有这句,VC6编译的exe执行时会崩溃
//vecIntC.resize(5); // ZC: 若这里设置的大小 小于7(∵这里结合实际情况,vecIntC的元素最多为7个),则VC6编译的exe在执行过程中:
// ZC: Debug会报"Debug Error !"==>"DAMAGE: after Normal block (#64) at 0x00332EE8";
// ZC: Release什么错误都没有,但是由于vecIntC中元素个数较少,放不下的那些数据就被丢弃了。 //并集
set_union(vecIntA.begin(), vecIntA.end(), vecIntB.begin(), vecIntB.end(), vecIntC.begin()); //vecIntC : {1,3,5,6,7,8,9,0,0,0} int iIdx = ;
vector<int>::iterator itC = vecIntC.begin();
while (itC != vecIntC.end())
{
printf("[%02d] ==> %d\n", iIdx, *itC);
itC ++;
iIdx ++;
}
printf("\n"); //交集
fill(vecIntC.begin(), vecIntC.end(), );
set_intersection(vecIntA.begin(), vecIntA.end(), vecIntB.begin(), vecIntB.end(), vecIntC.begin()); //vecIntC: {1,3,5,0,0,0,0,0,0,0} iIdx = ;
itC = vecIntC.begin();
while (itC != vecIntC.end())
{
printf("[%02d] ==> %d\n", iIdx, *itC);
itC ++;
iIdx ++;
}
printf("\n"); //差集
fill(vecIntC.begin(), vecIntC.end(), );
set_difference(vecIntA.begin(), vecIntA.end(), vecIntB.begin(), vecIntB.end(), vecIntC.begin()); //vecIntC: {7,9,0,0,0,0,0,0,0,0} iIdx = ;
itC = vecIntC.begin();
while (itC != vecIntC.end())
{
printf("[%02d] ==> %d\n", iIdx, *itC);
itC ++;
iIdx ++;
}
}

ZC:控制台输出:

 [00] ==> 1
[01] ==> 3
[02] ==> 5
[03] ==> 6
[04] ==> 7
[05] ==> 8
[06] ==> 9
[07] ==> 0
[08] ==> 0
[09] ==> 0 [00] ==> 1
[01] ==> 3
[02] ==> 5
[03] ==> 0
[04] ==> 0
[05] ==> 0
[06] ==> 0
[07] ==> 0
[08] ==> 0
[09] ==> 0 [00] ==> 7
[01] ==> 9
[02] ==> 0
[03] ==> 0
[04] ==> 0
[05] ==> 0
[06] ==> 0
[07] ==> 0
[08] ==> 0
[09] ==> 0
Press any key to continue

?.?、第6讲 PPT.?

ZC: VC6 测试代码:

ZC:控制台输出:

X

STL_算法_05_集合算法的更多相关文章

  1. stl集合算法

    accumulate() 累加  accumulate: 对指定范围内的元素求和,然后结果再加上一个由val指定的初始值.  #include<numeric> vector<i ...

  2. C++进阶 STL(3) 第三天 函数对象适配器、常用遍历算法、常用排序算法、常用算数生成算法、常用集合算法、 distance_逆序遍历_修改容器元素

    01昨天课程回顾 02函数对象适配器 函数适配器是用来让一个函数对象表现出另外一种类型的函数对象的特征.因为,许多情况下,我们所持有的函数对象或普通函数的参数个数或是返回值类型并不是我们想要的,这时候 ...

  3. STL_算法_06_遍历算法

    ◆ 常用的遍历算法: 1.1.用指定函数依次对指定范围内所有元素进行迭代访问.该函数不得修改序列中的元素 functor for_each(iteratorBegin, iteratorEnd, fu ...

  4. STL_算法_02_排序算法

    ◆ 常用的排序算法: 1.1.合并(容器A(全部/部分)&容器B(全部/部分)==>容器C(全部/部分),容器C中元素已经排好顺序),返回的值==>iteratorOutBegin ...

  5. STL_算法_01_查找算法

    1. 来自教程:第6讲 PPT.15 ◆ 常用的查找算法: 1.1.按条件查找N个相邻的元素 ( adjacent 是 邻近的意思) iterator = adjacent_find(iterator ...

  6. 最短路径算法之Dijkstra算法(java实现)

    前言 Dijkstra算法是最短路径算法中为人熟知的一种,是单起点全路径算法.该算法被称为是“贪心算法”的成功典范.本文接下来将尝试以最通俗的语言来介绍这个伟大的算法,并赋予java实现代码. 一.知 ...

  7. 最小生成树--Prim算法,基于优先队列的Prim算法,Kruskal算法,Boruvka算法,“等价类”UnionFind

    最小支撑树树--Prim算法,基于优先队列的Prim算法,Kruskal算法,Boruvka算法,“等价类”UnionFind 最小支撑树树 前几节中介绍的算法都是针对无权图的,本节将介绍带权图的最小 ...

  8. 算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification)

    算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification) 0.写在前面的话 我个人一直很喜欢算法一类的东西,在我看来算法是人类智慧的精华,其中蕴含着无与伦比 ...

  9. 最短路径算法(Dijkstra算法、Floyd-Warshall算法)

    最短路径算法具体的形式包括: 确定起点的最短路径问题:即已知起始结点,求最短路径的问题.适合使用Dijkstra算法. 确定终点的最短路径问题:即已知终结结点,求最短路径的问题.在无向图中,该问题与确 ...

随机推荐

  1. 测试常用的Oracle11G 命令行指令。

    测试常用的Oracle11G 命令行指令. ×××××××××××××××× 登录:

  2. Locust性能测试4-参数关联

    前言 前面[Locust性能测试2-先登录场景案例]讲了登录的案例,这种是直接传账号和密码就能登录了,有些登录的网站会复杂一点, 需要先从页面上动态获取参数,作为登录接口的请求参数,如[学信网:htt ...

  3. uva1330 在一个大的矩阵中寻找面积最大的子矩阵

    大白书 P50页 #include <algorithm> #include <cstdio> using namespace std; ; int ma[maxn][maxn ...

  4. FastDFS+nginx+keepalived集群搭建

    安装环境 nginx-1.6.2 libfastcommon-master.zip FastDFS_v5.05.tar.gz(http://sourceforge.net/projects/fastd ...

  5. java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串

    java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串 package com.zdz.test; im ...

  6. 笔试题二(java面向对象、多线程、集合)

    1.final关键字的特点 final修饰变量时,在堆内存中的地址是不变的,但对象的内容是可变的.//思考,找例子 2.静态变量的特点 实例变量是用对象引用,要先实例化对象,而静态变量属于类,只要类加 ...

  7. JavaScript甜点(1)

    甜点1:什么是脚本语言? 脚本语言是由传统编程语言简化而来的,它与传统的编程语言既有很多相似之处,又有很多的不同之处.脚本语言的最显著的特点是:首先它不需要编译成二进制,以文本的形式存在:其次就是脚本 ...

  8. bzoj2982: combination(Lucas定理)

    Description LMZ有n个不同的基友,他每天晚上要选m个进行[河蟹],而且要求每天晚上的选择都不一样.那么LMZ能够持续多少个这样的夜晚呢?当然,LMZ的一年有10007天,所以他想知道答案 ...

  9. 20145213《网络对抗》逆向及Bof基础

    实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShe ...

  10. 20165310 Java实验四 《Android程序设计》

    20165310 实验四 <Android程序设计> 第24章:初识Android 任务一:改写res目录中的内容,Hello World后要显示自己的学号,自己学号前后一名同学的学号 首 ...