容器的交集并集差集

使用泛型算法,mark一下


#include <vector>
#include <iostream>
#include <iterator>
#include <algorithm>
int main()
{
	std::vector<int> firstVec = {1,3,7,3,8,10,34};
	std::vector<int> secondVec = {3,8,54,10,37};
	std::ostream_iterator<int> out_iter(std::cout, " ");
	merge(firstVec.cbegin(), firstVec.cend(), secondVec.cbegin(), secondVec.cend(), out_iter);
	std::cout << std::endl;
	set_union(firstVec.cbegin(), firstVec.cend(), secondVec.cbegin(), secondVec.cend(), out_iter);
	std::cout << std::endl;
	set_difference(firstVec.cbegin(), firstVec.cend(), secondVec.cbegin(), secondVec.cend(), out_iter);
	std::cout << std::endl;
	set_intersection(firstVec.cbegin(), firstVec.cend(), secondVec.cbegin(), secondVec.cend(), out_iter);
	return 0;
}

上结果

结论:

merge操作合并所有数据,包括两个容器中相同部分;

set_union合并所有数据,但两个容器相同部分保留一个。但容器本身相同值不影响

set_difference计算差集,但不是两个容器的差集,而是第一个容器排除两个容器相同部分,剩余的值

set_intersection计算并集,即两个容器相同的部分

猜你喜欢

转载自blog.csdn.net/zxgmlcj/article/details/85280102