[C/C++标准库]_[初级]_[集合操作]
来源:互联网 发布:心知天气 融资 编辑:程序博客网 时间:2024/05/22 04:25
set_difference
set_union
set_symmetric_difference
场景:
1.需要合并集合或过滤出不同集合里的元素便于操作.如一个集合里有索引值1,2.总集合里有1,2,3,4,5.需要找出3,4,5时,就需要set_symmetric_difference
#include <stdio.h>#include <string.h>#include <algorithm>#include <vector>#include <iostream>#include <string>using namespace std;//1.可重复值//2.集合对称差void ExampleSetSymmetricDifference(){vector<int> i1;vector<int> i2;// int i1[] = {1,2,5,7};//int i2[] = {0,1,2,3};//int i2[] = {0,1,2,3,4,5,6,7};std::vector<int>::iterator it;i1.push_back(1);i1.push_back(2);i1.push_back(5);i1.push_back(8);i2.push_back(0);i2.push_back(1);i2.push_back(2);i2.push_back(3);i2.push_back(4);i2.push_back(5);i2.push_back(6);i2.push_back(6);i2.push_back(7); sort(i1.begin(),i1.end());sort(i2.begin(),i2.end());vector<int> res(i2.size()+i1.size());//对称差it = set_symmetric_difference(i1.begin(),i1.end(),i2.begin(),i2.end(),res.begin());res.resize(it-res.begin());size_t size = res.size();printf("size %d\n",size);for (it=res.begin(); it!=res.end(); ++it){std::cout << ' ' << *it; } std::cout << std::endl;}//1.可重复值//2.集合差集void ExampleSetDifference(){ int first[] = {5,10,15,15,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 //frist相对second的不同值 it=std::set_difference (first, first+5, second, second+5, v.begin()); // 5 15 25 0 0 0 0 0 0 0 v.resize(it-v.begin()); // 5 15 25 std::cout << "The difference has " << (v.size()) << " elements:\n"; for (it=v.begin(); it!=v.end(); ++it) { std::cout << ' ' << *it; } std::cout << std::endl;}//1.可重复值//1.集合并集,共有的只出现一次void ExampleSetUnion(){ int first[] = {5,10,15,15,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_union (first, first+5, second, second+5, v.begin()); v.resize(it-v.begin()); std::cout << "The union has " << (v.size()) << " elements:\n"; for (it=v.begin(); it!=v.end(); ++it) { std::cout << ' ' << *it; } std::cout << std::endl;}int main(int argc, char *argv[]){std::cout << "SetDifference" << endl;ExampleSetDifference();std::cout << "SetSymmetricDifference" << endl;ExampleSetSymmetricDifference();std::cout << "SetUnion" << endl;ExampleSetUnion();return 0;}
输出:
SetDifferenceThe difference has 4 elements: 5 15 15 25SetSymmetricDifferencesize 7 0 3 4 6 6 7 8SetUnionThe union has 9 elements: 5 10 15 15 20 25 30 40 50[Finished in 0.3s]
0 0
- [C/C++标准库]_[初级]_[集合操作]
- [C/C++]_[初级]_[原子操作]
- [C/C++标准库]_[初级]_[使用时间库]
- [C/C++标准库]_[初级]_[signal信号浅析]
- [C/C++标准库]_[初级]_[使用string stream]
- [C/C++标准库]_[初级]_[分割字符串Split]
- [C/C++标准库]_[初级]_[unary_function 和 binary_function]
- [C/C++标准库]_[初级]_[unary_function 和 binary_function]
- [C/C++标准库]_[初级]_[标准库里提供的排序算法]
- [C/C++标准库]_[初级]_[使用freopen重定向标准输出]
- [C/C++标准库]_[初级]_[对C链表排序]
- [Object-C]_[C/C++]_[集合操作对比]
- [C/C++标准库]_[初级]_[C++ iostream read getline 读取文件慢的原因]
- [C/C++标准库]_[初级]_[不使用正则替换和删除字符串]
- [C/C++标准库]_[初级]_[自定义std::map的key]
- [C/C++标准库]_[初级]_[使用auto_ptr智能指针]
- [C/C++标准库]_[初级]_[获取文件的所在目录跨平台实现]
- [C/C++标准库]_[初级]_[std::vector的删除元素]
- ubuntu: ssh service
- 软件设计是怎样炼成的(5)——规划系统的骨架(架构设计)(上篇)
- IMS Push-to-talk over Cellular (PoC) Call Flow Diagrams
- java中的String类的练习(来自毕向东老师视频资料)
- 《人月神话》
- [C/C++标准库]_[初级]_[集合操作]
- 简单理解java.lang.IllegalStateException异常:简单分析和简单解决方案
- IMS PoC
- 简单爬虫python实现01——获取网页源码与存储
- PHP遍历文件夹及子文件夹所有文件
- nask与nasm代码差异
- 并查集
- 1048. Find Coins (25)
- Android 技巧 - notification center 发出通知时显示文字