两个Vector交集、并集、补集运算
C++虽然对vector封装了大量的函数,比如判断元素是否在vector中find、去重的unique,还有在algorithm类中对两个vector求交集、并集的函数,但是,这些函数是不可以直接vector.XX来使用的,具体如下代码所示:
#include "iostream"
#include "vector"
#include "algorithm" //sort函数、交并补函数
#include "iterator" //求交并补使用到的迭代器
using namespace std;//打印容器vector
void print_vector(vector<int> v){if(v.size()>0){cout<<"{"; for(int i=0;i<int(v.size());i++){ cout<<v[i]<<","; } cout<<"\b}"; }else{cout<<"{}";}
}//容器vector中元素的去重
vector<int> unique_element_in_vector(vector<int> v){vector<int>::iterator vector_iterator;sort(v.begin(),v.end());vector_iterator = unique(v.begin(),v.end());if(vector_iterator != v.end()){v.erase(vector_iterator,v.end());}return v;
}//两个vector求交集
vector<int> vectors_intersection(vector<int> v1,vector<int> v2){vector<int> v;sort(v1.begin(),v1.end()); sort(v2.begin(),v2.end()); set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集 return v;
}//两个vector求并集
vector<int> vectors_set_union(vector<int> v1,vector<int> v2){vector<int> v;sort(v1.begin(),v1.end()); sort(v2.begin(),v2.end()); set_union(v1.begin(),v1.end(),v2.begin(),v2.end(),back_inserter(v));//求交集 return v;
}//判断vector的某一元素是否存在
bool is_element_in_vector(vector<int> v,int element){vector<int>::iterator it;it=find(v.begin(),v.end(),element);if (it!=v.end()){return true;}else{return false;}
}int main(){vector<int> v1,v2,v;v1.push_back(22);v1.push_back(22);v1.push_back(23);v2.push_back(23);v2.push_back(24);cout<<"v1是否存在1这个元素?"<<is_element_in_vector(v1,1)<<endl;cout<<"对v1去重:";v1=unique_element_in_vector(v1);print_vector(v1);cout<<endl;cout<<"求v1与v2的交集:";v=vectors_intersection(v1,v2);print_vector(v);cout<<endl;cout<<"求v1与v2的并集:";v=vectors_set_union(v1,v2);print_vector(v);return 0;
//两个vector求补集
std::vector<int> d1;
std::vector<int> d2;
std::cout << "set_different" << std::endl;
//Copies the elements from the sorted range [first1, last1)
//which are not found in the sorted range [first2, last2) to the range beginning //at d_firststd::set_difference(v1.begin(),v1.end(),result.begin(),result.end(),std::back_inserter(d1));std::set_difference(v2.begin(),v2.end(),result.begin(),result.end(),std::back_inserter(d2));
两个Vector交集、并集、补集运算相关推荐
- 集合中常用的合并 求交集 并集 补集问题
1.在平时的时候经常会用到求交集.补集.并集.差集的问题 本文通过引入org.apache.commons.collections4.CollectionUtils 进行很方便的解决 ArrayLis ...
- pandas对dataframe的两列取交集并集
输入:一个dataFrame,其中的两列是集合. 输出:对两列合并成新的一列,内容为两列的交集. 举个例子 我想得到的结果为 代码如下: pd.Series([set.intersection(*z) ...
- c++链表实现集合交集并集差集运算
#include<iostream> using namespace std; //创建链表 struct Node { int content; Node* next; ...
- java 两个list 交集 并集 差集 去重复并集
去重并集 例如:求List1和List2的并集,并实现去重. 思路是:先将list中与list2重复的去掉,之后将list2的元素全部添加进去. public static void test1(Li ...
- C++ vector去重 交集 并集
原文: yongh701 https://blog.csdn.net/yongh701/article/details/51406458 C++虽然对vector封装了大量的函数,比如判断元素是否在v ...
- oracle 并集 时间_Oracle集合运算符 交集 并集 差集
集合运算符:UNION/UNION ALL 并集,INTERSECT 交集,MINUS 差集 一.union求并集,公共部分只有包含一次 例:求emp表ename中含'A'或含有'M' SQL> ...
- PAT甲级1023 Have Fun with Numbers:[C++题解]高精度加法和两个vector大小比较
文章目录 题目分析 题目链接 题目分析 使用高精度加法高精度加法板子求 这个数的两倍,存在一个vector中. 所谓高精度就是使用string来存大的数,然后模拟列竖式加法,结果一位一位压入数组vec ...
- STL 算法vector/set集合-交集,并集,差集,对称差
针对这里提及的四个集合运算必须特别注意: 1.第一个算法需保证第一集合和第二集合有序,并从小到大排序,内部使用默认"<"操作符比较元素大小: 2.第二个算法需保证第一集合和 ...
- R语言union函数计算数据对象(vector、list、dataframe)的并集:union函数计算两个vector向量、dataframe、列表list的并集
R语言union函数计算数据对象(vector.list.dataframe)的并集:union函数计算两个vector向量.dataframe.列表list的并集 目录
最新文章
- [perl]Wide character in print报错
- micropython串口通信_MicroPython-ESP32串口通信-1Z实验室
- 如何确定JTAG好坏?JTAG到底是什么?
- 使用numpy实现神经网络模块
- oracle导出数据视频教程,Oracle导入导出数据的几种方式
- mysql inet addr_InetAddress类的使用
- 华侨大学计算机学院2019,华侨大学计算机科学与技术学院2019年非全日制研究生复试成绩(第四批)...
- 工具类TestTools
- 三元运算符 python_Python三元运算符
- matlab化函数图像示例,Matlab绘制函数图像函数示例汇总
- GOM引擎 mirserver服务端各文件夹注解
- 线性方程组基础解系的简便算法
- Java实训—VII,VIII
- 阿里物联网iot 网关配置 gateway 与子设备
- Vim 批量在行首/行尾插入相同字符
- 网页源代码隐藏域中存在密码
- 阿里云centos6静默安装oracle11G
- SAP ABAP 报表新增字段,重新生成维护视图,以及过程中产生的问题处理
- 寒冬潮袭过后(2018总结):各知名互联网一线公司年度大裁员
- python编程求圆的周长和面积公式_C语言求圆的周长和面积
热门文章
- 使用python保存图片
- 格林威尔北向接口在电信中的应用
- 《明朝那些事儿》 - 走入那段或辉煌或荒唐的岁月
- oracle dbms_workload_repository,oracle 10g 的dbms_workload_repository使用
- geth同步 retrieved hash chain is invalid 错误
- 使用squid代理时出现 The requested URL could not be retrieved
- SQL Server 数据库完整备份不只是备份数据还有日志
- JVM 堆栈分析讲解
- 男人有必要学会做饭,做家务吗?
- java map的长度_JavaMap的一些常用方法