首页 > 代码库 > stl集合算法

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集合算法