C++STL算法篇之集合算法

简介: C++STL算法篇之集合算法

集合算法

当然最好还是要包含

functional

algorithm

这2个头文件

集合算法有4个函数

1.set_union 交集

2.set_difference 差集

3.set_intersection 交集

4. set_symmetric_difference 对称差集

这4个函数的参数用法都差不多

set_union(并集)

就是求2个容器的并集,有5个参数,前4个参数分别为2个容器的范围,

最后一个参数可以是个输出流,直接打印出来,也可以存在第三个容器的起始位置

#include<iostream>
#include<functional>
#include<algorithm>
#include<string>
#include<vector>
using  namespace std;
int main()
{
  vector<int> date1{ 1, 2, 3, 4, 7, 8 };
  vector<int> date2{ 5, 6, 7, 8 };
  //1. set_union  并集算法
  //可以放到另一个容器中,也可以直接使用输出流打印出来
  set_union(date1.begin(), date1.end(), date2.begin(), date2.end(), ostream_iterator<int>(cout, " "));
  return 0;
}

set_difference(差集)

#include<iostream>
#include<functional>
#include<algorithm>
#include<string>
#include<vector>
using  namespace std;
int main()
{
  vector<int> date1{ 1, 2, 3, 4, 7, 8 };
  vector<int> date2{ 5, 6, 7, 8 };
  //2.set_difference 差集算法
  set_difference(date1.begin(), date1.end(), date2.begin(), date2.end(), ostream_iterator<int>(cout, " "));
  return 0;

set_intersection(交集)

#include<functional>
#include<algorithm>
#include<string>
#include<vector>
using  namespace std;
int main()
{
  vector<int> date1{ 1, 2, 3, 4, 7, 8 };
  vector<int> date2{ 5, 6, 7, 8 };
  //3.交集
  set_intersection(date1.begin(), date1.end(), date2.begin(), date2.end(), ostream_iterator<int>(cout, " "));
  cout << endl;
  return 0;
}

set_symmetric_difference(对称差集)

#include<iostream>
#include<functional>
#include<algorithm>
#include<string>
#include<vector>
using  namespace std;
int main()
{
  vector<int> date1{ 1, 2, 3, 4, 7, 8 };
  vector<int> date2{ 5, 6, 7, 8 };
  //4.对称差集算法 set_symetric_difference
  set_symmetric_difference(date1.begin(), date1.end(), date2.begin(), date2.end(),ostream_iterator<int>(cout," "));
  cout << endl;
  return 0;
}

集合算法讲解就到这里



相关文章
|
3天前
|
存储 算法 C++
详解C++中的STL(标准模板库)容器
【4月更文挑战第30天】C++ STL容器包括序列容器(如`vector`、`list`、`deque`、`forward_list`、`array`和`string`)、关联容器(如`set`、`multiset`、`map`和`multimap`)和容器适配器(如`stack`、`queue`和`priority_queue`)。它们为动态数组、链表、栈、队列、集合和映射等数据结构提供了高效实现。选择合适的容器类型可优化性能,满足不同编程需求。
|
9天前
|
存储 缓存 算法
C++从入门到精通:4.6性能优化——深入理解算法与内存优化
C++从入门到精通:4.6性能优化——深入理解算法与内存优化
|
9天前
|
存储 算法 程序员
C++从入门到精通:2.2.1标准库与STL容器算法深度解析
C++从入门到精通:2.2.1标准库与STL容器算法深度解析
|
10天前
|
存储 搜索推荐 C++
【C++高阶(二)】熟悉STL中的map和set --了解KV模型和pair结构
【C++高阶(二)】熟悉STL中的map和set --了解KV模型和pair结构
|
10天前
|
设计模式 C语言 C++
【C++进阶(六)】STL大法--栈和队列深度剖析&优先级队列&适配器原理
【C++进阶(六)】STL大法--栈和队列深度剖析&优先级队列&适配器原理
|
10天前
|
存储 缓存 编译器
【C++进阶(五)】STL大法--list模拟实现以及list和vector的对比
【C++进阶(五)】STL大法--list模拟实现以及list和vector的对比
|
10天前
|
算法 C++ 容器
【C++进阶(四)】STL大法--list深度剖析&list迭代器问题探讨
【C++进阶(四)】STL大法--list深度剖析&list迭代器问题探讨
|
10天前
|
编译器 C++
【C++进阶(三)】STL大法--vector迭代器失效&深浅拷贝问题剖析
【C++进阶(三)】STL大法--vector迭代器失效&深浅拷贝问题剖析
|
2天前
|
编译器 C++
【C++】一文全解四种经典 [ 特殊类 ]的设计
【C++】一文全解四种经典 [ 特殊类 ]的设计
|
3天前
|
编译器 C语言 C++
c++初阶------类和对象(六大默认构造函数的揭破)-3
c++初阶------类和对象(六大默认构造函数的揭破)