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算法. 确定终点的最短路径问题:即已知终结结点,求最短路径的问题.在无向图中,该问题与确 ...
随机推荐
- iOS开发--UILabel根据内容自动调整高度
写法一:对象方法,传入:字体/最大尺寸. 即可得到宽高, 最大尺寸主要限制宽度,如果是一行就给个{MAXFLOAT,MAXFLOAT};如果是多行就限制X值,Y值随便给 - (CGSize)sizeW ...
- Javascript--普通函数调用-涨工资计算函数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 021-centos6.5上二进制安装mysql5.7.22
思路: 下载上传mysql的二进制安装包. 准备好mysql的用户.安装目录basedir.数据目录datadir.配置文件/etc/my.cnf. 初始化出数据库. 配置启动服务. 开机启动. 配置 ...
- <Convolutional Neural Network for Paraphrase Identification>
code:https://github.com/chantera/bicnn-mi Yin的这篇论文提出了一种叫Bi-CNN-MI的架构,其中Bi-CNN表示两个使用Siamese框架的CNN模型:M ...
- EntityFramework包含作用
System.Data.Entity.Infrastructure.DbQuery的引用需要加入上面那个包
- Sa身份登陆SQL SERVER失败的解决方案
经常使用windows身份登陆,久而久之,基本不动怎么用SQL SERVER身份验证登陆,所以趁着有空,就解决一下一些问题~~ 解决方案: 第一步:打开SSMS,先使用windows身份登陆,右击服 ...
- Js基础知识1-数组操作全解
数组操作全解 js变量类型 var string; var name = "student",age=12; //underfined.null.boolean.string.nu ...
- centos 安装 jdk8和comcat8
1.去官网下载Linux版本的jdk8 2.进入ags,把tar.gz的压缩包拷贝到用户下指定目录java,然后解压 mkdir /home/ags/java tar -zxv -f jdk-8u11 ...
- git常用命令3
一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态git commit 提交git branch -a 查看所有的分支git branch -r 查看 ...
- SQL学习之SQL注入学习总结
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 测试数据库 我们本文就以如下数据库作为测试数据库,完成我们的注入分析 ...