STL中的set集合容器进行集合运算:并、交、差实例
2013-09-19 22:22
495 查看
集合容器的集合运算:并、交、差:
#include
"stdafx.h"
#include
<iostream>
#include
<set>
#include
<algorithm> //集合运算:并、交、差需要包含该头文件
using namespace std;
structltstr
{
bool
operator()(const
char* s1,const char* s2)
const
{
return strcmp(s1,s2)<0; //由小到大排序
//return strcmp(s1,s2)<0; //由大到小排序
}
};
int_tmain(int argc, _TCHAR* argv[])
{
const int N = 6;
const
char* a
= {"isomer","ephemeral","prosaic","nugatory","artichoke","serif"};
const
char* b
= {"flat","this","artichoke","frigate","prosaic","isomer"};
set<const
char*,ltstr>A(a,a+N);
set<const
char*,ltstr> B(b,b+N);
set<const
char*,ltstr>C;
set<const
char*,ltstr>D;
cout<<"Set A:";
copy(A.begin(),A.end(),ostream_iterator<const
char*>(cout," "));
cout<<endl;
cout<<"Set B:";
copy(B.begin(),B.end(),ostream_iterator<const
char*>(cout," "));
cout<<endl;
cout<<"Union: ";
//set_union函数需要#include <algorithm>
set_union(A.begin(),A.end(),B.begin(),B.end(),ostream_iterator<const
char*>(cout," "),ltstr());
cout<<endl;
cout<<"Intersection: ";
set_intersection(A.begin(),A.end(),B.begin(),B.end(),ostream_iterator<const
char*>(cout," "),ltstr());
cout<<endl;
cout<<"Set C (difference of A and B):";
set_difference(A.begin(),A.end(),B.begin(),B.end(),inserter(C,C.begin()),ltstr());//从A中减去B包含的元素
copy(C.begin(),C.end(),ostream_iterator<const
char*>(cout," "));
cout<<endl;
cout<<"Set D (difference of B and A):";
set_difference(B.begin(),B.end(),A.begin(),A.end(),inserter(D,D.begin()),ltstr());//从B中减去A包含的元素
copy(D.begin(),D.end(),ostream_iterator<const
char*>(cout," "));
cout<<endl;
return 0;
}
运行结果:
#include
"stdafx.h"
#include
<iostream>
#include
<set>
#include
<algorithm> //集合运算:并、交、差需要包含该头文件
using namespace std;
structltstr
{
bool
operator()(const
char* s1,const char* s2)
const
{
return strcmp(s1,s2)<0; //由小到大排序
//return strcmp(s1,s2)<0; //由大到小排序
}
};
int_tmain(int argc, _TCHAR* argv[])
{
const int N = 6;
const
char* a
= {"isomer","ephemeral","prosaic","nugatory","artichoke","serif"};
const
char* b
= {"flat","this","artichoke","frigate","prosaic","isomer"};
set<const
char*,ltstr>A(a,a+N);
set<const
char*,ltstr> B(b,b+N);
set<const
char*,ltstr>C;
set<const
char*,ltstr>D;
cout<<"Set A:";
copy(A.begin(),A.end(),ostream_iterator<const
char*>(cout," "));
cout<<endl;
cout<<"Set B:";
copy(B.begin(),B.end(),ostream_iterator<const
char*>(cout," "));
cout<<endl;
cout<<"Union: ";
//set_union函数需要#include <algorithm>
set_union(A.begin(),A.end(),B.begin(),B.end(),ostream_iterator<const
char*>(cout," "),ltstr());
cout<<endl;
cout<<"Intersection: ";
set_intersection(A.begin(),A.end(),B.begin(),B.end(),ostream_iterator<const
char*>(cout," "),ltstr());
cout<<endl;
cout<<"Set C (difference of A and B):";
set_difference(A.begin(),A.end(),B.begin(),B.end(),inserter(C,C.begin()),ltstr());//从A中减去B包含的元素
copy(C.begin(),C.end(),ostream_iterator<const
char*>(cout," "));
cout<<endl;
cout<<"Set D (difference of B and A):";
set_difference(B.begin(),B.end(),A.begin(),A.end(),inserter(D,D.begin()),ltstr());//从B中减去A包含的元素
copy(D.begin(),D.end(),ostream_iterator<const
char*>(cout," "));
cout<<endl;
return 0;
}
运行结果:
相关文章推荐
- STL中的set集合容器进行集合运算:并、交、差实例
- c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例
- STL集合容器set按照由小到大或者由大到小的顺序存放元素
- STL之set集合容器
- STL之set集合容器
- c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例
- STL之set集合容器
- C++STL_set中函数_集合运算
- C++中STL容器的分类和基本功能(二):集合(set) 映射(map)
- C++/STL关联容器-集合-multiset&set的用法
- STL关联式容器之集合set
- STL学习笔记-set/multiset容器(集合)
- 【C++】STL常用容器总结之九:集合set
- c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例
- C++ STL set集合容器常用用法
- STL之set集合容器 【转】
- STL之set集合容器
- STL之set集合容器
- STL泛型编程-set集合容器
- STL 关联容器 之set(无重复有序集合)