set_intersection的基本使用方式

学习目标:

掌握常用的集合算法

算法简介:

set_intersection           //求两个容器的交集set_union                         //求两个容器的并集set_difference                    //求两个容器的并集

set_intersection

功能描述:
*
求两个容器的交集

函数原型:

set_intersection(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);
//求两个集合的交集
//注意:两个集合必须是有序序列
//beg1容器1开始迭代器
//end1容器1结束迭代器
//beg2容器2开始迭代器
//end2容器2结束迭代器
//dest目标容器开始迭代器

代码示例:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
//常用的集合算法
class myPrint
{public:void operator()(int val){cout << val << " ";}
};
void test01()
{vector<int>v1;vector<int>v2;for (int i = 0; i < 10; i++){v1.push_back(i);     //0~9v2.push_back(i + 5); //5~14}vector<int>vTarget;//目标容器需要提前开辟空间//最特殊情况  大容器包含小容器,开辟空间 取小容器的size即可vTarget.resize(min(v1.size(), v2.size()));//获取交集  返回目标容器的最后一个元素的迭代器地址vector<int>::iterator itEnd=set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());for_each(vTarget.begin(), itEnd, myPrint());cout << endl;
}
int main()
{test01();system("pause");return 0;
}

总结:

求交集的两个集合必须是有序序列

目标容器开辟空间需要从两个容器中取小值

set_intersection返回值既是交集中最后一个元素的位置

欢迎关注微信公众号黑马金牌编程

set_intersection的基本使用方式相关推荐

  1. C++ STL中set底层实现方式

    Q:STL中set底层实现方式? 为什么不用hash? A: 第一个问题:set底层实现方式为RB树(即红黑树). 第二个问题: 首先set,不像map那样是key-value对,它的key与valu ...

  2. STL官网学习笔记——set_intersection

    练习题有做到 set_intersection 的相关练习,看别人写的看不懂,就找到了STL的官方文档,翻译加总结如下,如果单纯想要实例,可以去后面直接复制粘贴代码. STL的地址:http://st ...

  3. 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题

    继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...

  4. ECS(Linux)连接RDS,使用命令行方式连接实例

    使用命令行方式连接实例 通过命令行连接RDS MySQL数据库,连接方式如下: mysql -h<连接地址> -P<端口> -u<用户名> -p -D<数据库 ...

  5. 远程控制virtual box虚拟机系统的三种方式

    远程控制virtual box虚拟机系统的三种方式[阅读时间:5分钟] 1.使用现有的远程控制软件 2.使用SSH连接 3.使用远程桌面控制虚拟机系统 对于把虚拟机安装在寝室笔记本的人来说,能够远程控 ...

  6. Java 多线程的基本方式

    Java 多线程的基本方式 基础实现两种方式: 通过实现Callable 接口方式(可得到返回值):

  7. docker 容器访问宿主机的解决方式

    需求 基于本地docker的自研及使用需要,希望docker容器的服务能连接到宿主机提供的服务. 背景 网络上查阅了大量的资料,基本的解决办法是通过手动查阅IP的方式进行, 但docker宿主机的ip ...

  8. Redis 笔记(14)— 持久化及数据恢复(数据持久方式 RDB 和 AOF、数据恢复、混合持久化)

    1. 持久化 所谓持久化是指将数据从内存中以某种形式同步到硬盘中,在 Redis 重启后能够根据硬盘中的记录恢复数据.Redis 持久化有两种方式,分别为 RDB(redis data base) [ ...

  9. Python 多进程笔记 — 启动进程的方式、守护进程、进程间通信、进程池、进程池之间通信、多进程生产消费模型

    1 面向过程启动多进程 Python 操作进程的类都定义在 multiprocessing 模块,该模块提供了一个 Process 类来代表一个进程对象,这个对象可以理解为是一个独立的进程,可以执行另 ...

  10. spring IOC创建对象方式

    spring IOC创建对象方式 通过无参构造来创建 验证方法: 创建实体类: public class User {private String name;public User() {System ...

最新文章

  1. R语言实现多线性回归模型预测时间序列数据 MLR models in R
  2. java swt最小化到托盘_SWT 中实现最小化到托盘图标,并只能通过托盘的弹出菜单关闭程序...
  3. 需求分析——调研需求时如何调查系统相关者?
  4. mysql round 0.1111_听说Mysql你很豪横?-------------分分钟带你玩转SQL高级查询语句(库函数,存储过程)...
  5. 矩阵交换行(信息学奥赛一本通-T1119)
  6. 上线随想之2011-03-26
  7. C51行列键盘扫描程序
  8. win7使用命令行改计算机名,Win7巧用注册表更改计算机名的实用方法
  9. OLED屏显和汉字点阵编码原理
  10. linux 向日葵教程,远程控制工具——Centos7上向日葵安装使用(转)
  11. 【计算机图形学】Bezier曲线软件及操作
  12. ISP—图像调试实习生(第14天)
  13. linux文件下生成一个文件,Linux系统下生成一个指定大小的文件要注意什么?
  14. 酷派 手机 stop charging
  15. 前端实现给文字添加动态背景
  16. 微信Android热更新Tinker使用详解(by 星空武哥)
  17. Windows 8.1核心版通过注册表启用Guest账号的局域网共享
  18. 极限论总极难学真因:人有抵制思想混乱学说本能
  19. 系统架构设计应考虑的因素
  20. oracle exp导出表where,oracle EXP导出一张表时使用query参数指定where条件

热门文章

  1. SQL基础【一.DQL 数据查询语言】
  2. osm 搭建离线地图_利用OpenStreetMap(OSM)数据搭建一个地图服务
  3. Frogs' Neighborhood POJ - 1659
  4. Android 9.0 wifi 热点 汇总
  5. 机器学习:PageRank
  6. 普通大一学生的自我反思
  7. 我的朋友去国外出差回不来了
  8. [NOIP 2018]龙虎斗 题解(Python)
  9. c 程序语言的溢出错误,C语言中溢出错误分析和防范
  10. Ubuntu 更换阿里云软件源