STL_算法_05_集合算法
◆ 常用的集合算法:
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_集合算法的更多相关文章
- stl集合算法
accumulate() 累加 accumulate: 对指定范围内的元素求和,然后结果再加上一个由val指定的初始值. #include<numeric> vector<i ...
- C++进阶 STL(3) 第三天 函数对象适配器、常用遍历算法、常用排序算法、常用算数生成算法、常用集合算法、 distance_逆序遍历_修改容器元素
01昨天课程回顾 02函数对象适配器 函数适配器是用来让一个函数对象表现出另外一种类型的函数对象的特征.因为,许多情况下,我们所持有的函数对象或普通函数的参数个数或是返回值类型并不是我们想要的,这时候 ...
- STL_算法_06_遍历算法
◆ 常用的遍历算法: 1.1.用指定函数依次对指定范围内所有元素进行迭代访问.该函数不得修改序列中的元素 functor for_each(iteratorBegin, iteratorEnd, fu ...
- STL_算法_02_排序算法
◆ 常用的排序算法: 1.1.合并(容器A(全部/部分)&容器B(全部/部分)==>容器C(全部/部分),容器C中元素已经排好顺序),返回的值==>iteratorOutBegin ...
- STL_算法_01_查找算法
1. 来自教程:第6讲 PPT.15 ◆ 常用的查找算法: 1.1.按条件查找N个相邻的元素 ( adjacent 是 邻近的意思) iterator = adjacent_find(iterator ...
- 最短路径算法之Dijkstra算法(java实现)
前言 Dijkstra算法是最短路径算法中为人熟知的一种,是单起点全路径算法.该算法被称为是“贪心算法”的成功典范.本文接下来将尝试以最通俗的语言来介绍这个伟大的算法,并赋予java实现代码. 一.知 ...
- 最小生成树--Prim算法,基于优先队列的Prim算法,Kruskal算法,Boruvka算法,“等价类”UnionFind
最小支撑树树--Prim算法,基于优先队列的Prim算法,Kruskal算法,Boruvka算法,“等价类”UnionFind 最小支撑树树 前几节中介绍的算法都是针对无权图的,本节将介绍带权图的最小 ...
- 算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification)
算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification) 0.写在前面的话 我个人一直很喜欢算法一类的东西,在我看来算法是人类智慧的精华,其中蕴含着无与伦比 ...
- 最短路径算法(Dijkstra算法、Floyd-Warshall算法)
最短路径算法具体的形式包括: 确定起点的最短路径问题:即已知起始结点,求最短路径的问题.适合使用Dijkstra算法. 确定终点的最短路径问题:即已知终结结点,求最短路径的问题.在无向图中,该问题与确 ...
随机推荐
- MVC增加操作日志
在后台管理中,有一些操作是需要增加操作日志的,尤其是对一些比较敏感的金额类的操作,比如商城类的修改商品金额.删除商品.赠送金额等人工的操作.日志中记录着相关操作人的操作信息,这样,出了问题也容易排查. ...
- myeclipse自带的数据库查看文件
jdbc:mysql://localhost:3306/videocms?useUnicode=true&characterEncoding=utf8
- Linux系统——Keepalived高可用集群
#### keepalived服务的三个重要功能1. 管理LVS负载均衡软件Keepalived可以通过读取自身的配置文件,实现通过更底层的接口直接管理LVS的配置以及控制服务的启动,停止功能,这使得 ...
- 33. Search in Rotated Sorted Array(二分查找)
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- 无法在web服务器下启动调试
VS2013 编译时异常 无法在web服务器下启动调试.该Web服务器未及时响应 VS2013 编译时错误 无法在web服务器上启动调试.该Web服务器未及时响应.无法在web服务器上启动调试.该 ...
- 文本按列导入excel
打开excel,选择数据选项卡,自文本选项.
- NOSQL学习之二:MongoDB
MongoDB是一个高性能,开源,无模式的文档型数据库,它在许多场景下可用于替代传统的关系型数据库或键/值存储方式,是当前NoSQL数据库中比较热门的一种. MongoDB使用C++开发.不支持SQL ...
- linux常用命令:tr 命令
tr 命令实现字符转换功能,其功能类似于 sed 命令,但是,tr 命令比 sed 命令简单.也就是说,tr 命令能实现的功能,sed 命令都可以实现.尽管如此,tr 命令依然是 Linux 系统下处 ...
- linux基础命令---du
du 以块为单位,显示当前目录下,所有目录.文件.子目录的磁盘使用情况.总结每个文件的磁盘使用情况,对目录进行递归处理 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE. ...
- Python3.x与Python2.x的差异用法
Python3.x与Python2.x的差异用法 1,关于urllib2区别: # python2 import urllib2 # python3 # 用urllib.request代替urllib ...