c++ set_union set_intersection使用
自定义类型也可以构造set,但同样必须定义“小于”运算符,set中的元素从小到大排列好了
#include<iostream>
#include<string>
#include <set>
#include <algorithm>
using namespace std;
int main(){
set<int>a;
set<int>b;
set<int>x;
x.insert(1);
x.insert(2);
a.insert(5);
a.insert(6);
a.insert(7);
b.insert(4);
b.insert(6);
b.insert(8);
set<int>::iterator ip;
for(ip=a.begin();ip!=a.end();ip++){
cout << "A的集合为" << *ip;
}cout << endl;
for(ip=b.begin();ip!=b.end();ip++){
cout << "B的集合为" << *ip;
}cout << endl;
//目标集合X 从哪个位置插入 x.begin()从x的头开始插入
set_union(a.begin(),a.end(),b.begin(),b.end(),inserter(x,x.begin()));
for(ip=x.begin();ip!=x.end();ip++){
cout << "并集:" << *ip;
}cout << endl;
x.clear() ;
set_intersection(a.begin(),a.end(),b.begin(),b.end(),inserter(x,x.begin()));
for(ip=x.begin();ip!=x.end();ip++){
cout << "交集:" << *ip;
}
cout << endl;
x.clear();
set_difference(a.begin(),a.end(),b.begin(),b.end(),inserter(x,x.begin()));
for(ip=x.begin();ip!=x.end();ip++)
cout << "差集:" <<*ip;
cout <<endl; return 0;
}
--------------------------------------------------------------------------
// set_intersection example
#include <iostream> // std::cout
#include <algorithm> // std::set_intersection, std::sort
#include <vector> // std::vector
int main () {
int first[] = {5,10,15,20,25};
int second[] = {50,40,30,20,10};
std::vector<int> v(10); // 0 0 0 0 0 0 0 0 0 0
std::vector<int>::iterator it;
std::sort (first,first+5); // 5 10 15 20 25
std::sort (second,second+5); // 10 20 30 40 50
it=std::set_intersection (first, first+5, second, second+5, ++v.begin());
// 10 20 0 0 0 0 0 0 0 0
v.resize(it-v.begin()); // 10 20
std::cout << "The intersection has " << (v.size()) << " elements:\n";
for (it=v.begin(); it!=v.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
}

------------------------
#include <algorithm>
#include <iostream>
#include <functional>
#include <cstring>
using namespace std;
int main() {
char *Alphabet = "abcdefghijklmnopqrstuvwxyz" ;
char *Vowels = "aeiou" ;
char *AlphaNum = "0123456789abcdef" ;
char result[45] ;
char *last ;
int lenA = strlen(Alphabet) ;
int lenV = strlen(Vowels ) ;
int lenAN = strlen(AlphaNum) ;
cout << "Alphabet = " << Alphabet << endl ;
cout << "Vowels = " << Vowels << endl ;
cout << "AlphaNum = " << AlphaNum << endl ;
cout << "\nusing non-predicate versions" << endl ;
//non-predicate set_difference
last = set_difference(Alphabet, Alphabet+lenA,
AlphaNum, AlphaNum+lenAN,
result) ;
*last = 0 ;
cout << "set_difference(Alphabet, AlphaNum) = " << result << endl ;
//non-predicate set_intersection
last = set_intersection(Alphabet, Alphabet+lenA,
AlphaNum, AlphaNum+lenAN,
result) ;
*last = 0 ;
cout << "set_intersection(Alphabet, AlphaNum) = " << result << endl ;
//non-predicate set_symmetric_difference
last = set_symmetric_difference(Alphabet, Alphabet+lenA,
Vowels , Vowels +lenV,
result) ;
*last = 0 ;
cout << "set_symmetric_difference(Alphabet, Vowels) = " << result << endl ;
//non-predicate set_union
last = set_union(Alphabet, Alphabet+lenA,
AlphaNum, AlphaNum+lenAN,
result) ;
*last = 0 ;
cout << "set_union(Alphabet, AlphaNum) = " << result << endl ;
cout << "\nusing predicate versions" << endl ;
//predicate set_difference
last = set_difference(Alphabet, Alphabet+lenA,
AlphaNum, AlphaNum+lenAN,
result , less<char>()) ;
*last = 0 ;
cout << "set_difference(Alphabet, AlphaNum) = " << result << endl ;
//predicate set_intersection
last = set_intersection(Alphabet, Alphabet+lenA,
AlphaNum, AlphaNum+lenAN,
result , less<char>()) ;
*last = 0 ;
cout << "set_intersection(Alphabet, AlphaNum) = " << result << endl ;
//predicate set_symmetric_difference
last = set_symmetric_difference(Alphabet, Alphabet+lenA,
Vowels , Vowels +lenV,
result , less<char>()) ;
*last = 0 ;
cout << "set_symmetric_difference(Alphabet, Vowels) = " << result << endl ;
//predicate set_union
last = set_union(Alphabet, Alphabet+lenA,
AlphaNum, AlphaNum+lenAN,
result , less<char>()) ;
*last = 0 ;
cout << "set_union(Alphabet, AlphaNum) = " << result << endl ;
return 0 ;
}
c++ set_union set_intersection使用的更多相关文章
- 在sorted range上的操作(includes,set_union,set_intersection,set_difference)
includes //版本一:用operator <比较元素 template <class InputerIterator1,class InputerIterator2> boo ...
- STL--STL和她的小伙伴们:
STL--概述: 标准模板库(StandardTemplateLibrary,STL),是C++程序设计语言标准模板库.STL是由Alexander Stepanov.Meng Lee和David R ...
- C++ 容器一些细节
今天学习是看到了讲解C++容器的一些细节用法,故记之!参考:http://www.cnblogs.com/answeryi/archive/2011/12/16/2289811.html: 目录 == ...
- C++ 容器及选用总结
目录 ==================================================== 第一章 容器 第二章 Vector和string 第三章 关联容器 第四章 迭代器 第五 ...
- c++容器使用总结(转载)
目录 ==================================================== 第一章 容器 第二章 Vector和string 第三章 关联容器 第四章 迭代器 第五 ...
- C++ STL源代码学习之算法篇
///因为篇幅太长,因此,删去了非常多接口,仅仅分析了内部实现,算法对迭代器的要求也被删去 /// search. template <class _ForwardIter1, class _F ...
- UVa 496 - Simply Subsets
题目大意:给你两个集合,判断两个集合的关系(不相交.相等.真子集和其他).简单判断就可以了,不过STL的set没有交集.并集等操作有点让人觉得不方便... #include <cstdio> ...
- STL中算法分类
操作对象 直接改变容器的内容 将原容器的内容复制一份,修改其副本,然后传回该副本 功能: 非可变序列算法 指不直接修改其所操作的容器内容的算法 计数算法 count.count_if 搜 ...
- Effective STL 读书笔记
Effective STL 读书笔记 标签(空格分隔): 未分类 慎重选择容器类型 标准STL序列容器: vector.string.deque和list(双向列表). 标准STL管理容器: set. ...
随机推荐
- knockout.js(js)代码在IE中出现“意外地调用了方法或属性”的错误
var CartListViewModel = function () { var self = this; self.payment = [ { name: "", value: ...
- RedHat/centOS 部分字符处理
sed -i '/^$/d' filename #删除空行sed -i '/tablename/d' filename #删除含有匹配字符串的行sed -i '/_c1/d' filename #删除 ...
- Verilog之openMSP430(1)
openMSP430_IO interrupt Verilog file: omsp_gpio.v //================================================ ...
- 前端web通过flask操作数据库-增删改查
后端python代码: #coding:utf8 from flask import Flask,request,render_template import pymysql as mysql imp ...
- Python内置数据结构之元组tuple
1. Python序列之元组:不可修改的序列 元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能像列表式的增删改,只能查,切片,所以元组又叫只读列表. 元组用圆括号括起(这是通常采用的做法) ...
- 序列模型(2)-----循环神经网络RNN
一.RNN的作用和粗略介绍: RNN可解决的问题: 训练样本输入是连续的序列,且序列的长短不一,比如基于时间的序列:一段段连续的语音,一段段连续的手写文字.这些序列比较长,且长度不一,比较难直接的拆分 ...
- mysql进阶练习
一 . MySQL进阶练习 /*==========================创建班级表=============================*/ CREATE TABLE class ( ...
- HDU 1385 Minimum Transport Cost( Floyd + 记录路径 )
链接:传送门 题意:有 n 个城市,从城市 i 到城市 j 需要话费 Aij ,当穿越城市 i 的时候还需要话费额外的 Bi ( 起点终点两个城市不算穿越 ),给出 n × n 大小的城市关系图,-1 ...
- 【LibreOJ 6277】数列分块入门 1 (分块)
emmm-学下分块~ 区间:数列中连续一段的元素 区间操作:将某个区间[a,b]的所有元素进行某种改动的操作 块:我们将数列划分成若干个不相交的区间,每个区间称为一个块 整块:在一个区间操作时,完整包 ...
- python_格式化拼接、format,编码、解码
一.格式化拼接.format 1.字符串拼接 name = "Monica", age = 16 print("姓名"+name+“年龄”+age+" ...