stl集合算法

Posted 菜鸟根据地

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stl集合算法相关的知识,希望对你有一定的参考价值。

accumulate()  累加
?	accumulate:  对指定范围内的元素求和,然后结果再加上一个由val指定的初始值。
?	#include<numeric>
		vector<int> vecIntA;
		vecIntA.push_back(1);
		vecIntA.push_back(3);
		vecIntA.push_back(5);
		vecIntA.push_back(7);
		vecIntA.push_back(9);
		int iSum = accumulate(vecIntA.begin(), vecIntA.end(), 100);		//iSum==125
fill() 
?	fill:   将输入值赋给标志范围内的所有元素。
		vector<int> vecIntA;
		vecIntA.push_back(1);
		vecIntA.push_back(3);
		vecIntA.push_back(5);
		vecIntA.push_back(7);
		vecIntA.push_back(9);
		fill(vecIntA.begin(), vecIntA.end(), 8);		//8, 8, 8, 8, 8
10.3.8常用的集合算法
set_union(),set_intersection(),set_difference()
?	set_union:  构造一个有序序列,包含两个有序序列的并集。
?	set_intersection:  构造一个有序序列,包含两个有序序列的交集。
?	set_difference:  构造一个有序序列,该序列保留第一个有序序列中存在而第二个有序序列中不存在的元素。
vector<int> vecIntA;
		vecIntA.push_back(1);
		vecIntA.push_back(3);
		vecIntA.push_back(5);
		vecIntA.push_back(7);
		vecIntA.push_back(9);

		vector<int> vecIntB;
		vecIntB.push_back(1);
		vecIntB.push_back(3);
		vecIntB.push_back(5);
		vecIntB.push_back(6);
		vecIntB.push_back(8);

		vector<int> vecIntC;
		vecIntC.resize(10);

		//并集
		set_union(vecIntA.begin(), vecIntA.end(), vecIntB.begin(), vecIntB.end(), vecIntC.begin());		//vecIntC : {1,3,5,6,7,8,9,0,0,0}

		//交集
		fill(vecIntC.begin(),vecIntC.end(),0);
		set_intersection(vecIntA.begin(), vecIntA.end(), vecIntB.begin(), vecIntB.end(), vecIntC.begin());		//vecIntC: {1,3,5,0,0,0,0,0,0,0}

		//差集
		fill(vecIntC.begin(),vecIntC.end(),0);
		set_difference(vecIntA.begin(), vecIntA.end(), vecIntB.begin(), vecIntB.end(), vecIntC.begin());			//vecIntC: {7,9,0,0,0,0,0,0,0,0}

  

以上是关于stl集合算法的主要内容,如果未能解决你的问题,请参考以下文章

[C++STL]常用集合算法

比给定值最小的最大元素的 STL 算法

使用 STL 算法查找集合中的所有匹配项

stl集合算法

使用 STL 算法查找集合中的前两个不相邻元素

STL集合运算