栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++基础-补漏日记17完结(STL拷贝、替换、交并差算法)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++基础-补漏日记17完结(STL拷贝、替换、交并差算法)

目录

STL拷贝算法

copy算法

 STL替换算法

replace算法

replace_if算法

swap交换算法

accumulate算法(总和,算数生成算法)

 fill填充算法

 交并差算法

交集

并集

差集


STL拷贝算法

copy算法

copy(原容器迭代器起始,原容器迭代器终止,目标容器迭代器起始) 

	copy(v1.begin(),v1.end(),v2.begin());

 STL替换算法

replace算法

replace(容器迭代器起始,容器迭代器终止,原元素,替换元素)

	replace(v1.begin(),v1.end(),3,666);//将3替换成666

replace_if算法

replace_if(容器迭代器起始,容器迭代器终止,符合条件的原元素,替换元素)

class GreatTwo {//仿函数
public:
	bool operator() (int val) {
		if (val > 2)
			return true;
		return false;
	}
};
	replace_if(v1.begin(),v1.end(), GreatTwo(),233);//将大于2替换成233

swap交换算法

swap(容器名1,容器名2)

	vector v1;
	vector v2;
	swap(v1,v2);

accumulate算法(总和,算数生成算法)
#include
#include

accumulate(容器迭代器起始,容器迭代器终止, 累加初始值);

int num = accumulate(v1.begin(), v1.end(), 0);

  

 fill填充算法
#include
#include
	vector v1;
	v1.resize(10);
	fill(v1.begin(), v1.end(), 233); //从头到尾填充成233

 

 交并差算法

交集

set_intersection(容器1迭代器起始,容器1迭代器终止,容器2迭代器起始,容器2迭代器终止,容器3迭代器起始)

·容器1、2要有序。

	vector v1;
	vector v2;
	for (int i = 0; i < 5; i++) {
		v1.push_back(i);	//0~4
		v2.push_back(i + 2);	//2~6	交集2~4
	}

	vector v3;//目标容器
	v3.resize(min(v1.size(),v2.size()));//并集,元素个数不会超过元素最少容器的个数。

	vector::iterator itEnd=set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());

  

 并集

set_union(容器1迭代器起始,容器1迭代器终止,容器2迭代器起始,容器2迭代器终止,容器3迭代器起始)

·容器1、2要有序。

	vector v1;
	vector v2;
	for (int i = 0; i < 5; i++) {
		v1.push_back(i);	//0~4
		v2.push_back(i + 2);	//2~6	并集0~6
	}

	vector v3;//目标容器
	int num = v1.size() + v2.size();
	v3.resize(num);//最差的情况是两容器无相同元素,故相加

	vector::iterator itEnd=set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());
	for_each(v3.begin(),itEnd,func0());

  

差集

 set_difference(容器1迭代器起始,容器1迭代器终止,容器2迭代器起始,容器2迭代器终止,容器3迭代器起始)

·容器1、2要有序。

	vector v1;
	vector v2;
	for (int i = 0; i < 5; i++) {
		v1.push_back(i);	//0~4
		v2.push_back(i + 2);	//2~6	交集2~4
	}

	vector v3;//目标容器
	v3.resize(min(v1.size(), v2.size()));//并集,元素个数不会超过元素最少容器的个数。

	vector::iterator itEnd = set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1030586.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号