集合运算
集合(Set)是一种包含已排序对象的关联容器
set常用的成员函数
find(); //返回一个指向被查找到元素的迭代器
erase(); //删除集合中的元素
insert(); // 在集合中插入元素
clean(); // 清除所有元素
empty(); //如果集合为空,返回true
size(); //集合中元素的数目
begin(); //返回指向第一个元素的迭代器
end(); //返回指向最后一个元素的迭代器
-----------------------------------------------------------------------------------------------------干货已经介绍完了,那么练习set的用法;
集合运算
给出两个整数集合A、B,求出他们的交集、并集以及B在A中的余集
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1005;
int A[maxn]; // 数组A
int B[maxn]; // 数组B
set<int> s1; // 交集的容器
set<int> s2; // 并集的容器
set<int> s3; // 余集的容器
int main() {
int n, m; // n-数组A元素的个数, m-数组B元素的个数
cin >> n;
for(int i=0; i<n; i++) {
cin >> A[i];
s2.insert(A[i]); // 将集合A插到s2容器里
s3.insert(A[i]); // 同上
}
cin >> m;
for(int i=0; i<m; i++) {
cin >> B[i];
s2.insert(B[i]); // // 将集合B插到s2容器里
}
set<int>::iterator p; // 迭代器
for(int i=0; i<n; i++) {
for(int j=0; j<m; j++)
if(A[i]==B[j])
s1.insert(A[i]); // 将集合A和集合B的交集插入到s1中
}
//输出A和B的交集
for(p = s1.begin(); p!= s1.end(); ++p)
cout << *p << " ";
cout << endl;
//输出A和B的并集
for(p = s2.begin(); p != s2.end(); ++p)
cout << * p << " ";
cout << endl;
//输出B在A中的余集中的所有元素
for(p = s1.begin(); p!=s1.end(); ++p)
s3.erase(*p);
for(p=s3.begin(); p!=s3.end(); ++p)
cout << *p << " ";
cout << endl;
return 0;
}