STL常用算法

需要包含的头文件

#include<iostream>
#include<set>
#include<map>
#include<vector>
#include<string>
#include<algorithm>
#include<functional>
#include<numeric>//一些算术算法中需要

遍历算法

STL中常用的遍历算法
//for_each,transform
void show(int& n)
{

	cout << n << endl;
	//此外还可以在这里对n进行修改,改变容器里元素的值
}

int show1(int& n)
{

	return n + 100;
}

int main()
{
	vector<int> v1;
	for (int i = 0; i < 10; ++i)
		v1.push_back(i);
	for_each(v1.begin(), v1.end(), show);

	vector<int> v2;
	v2.resize(v1.size());//等于v2(10)
	//transform()的使用
	transform(v1.begin(), v1.end(), v2.begin(), show1);//改变v1容器中的值,并把结果放入v2中
	for_each(v2.begin(), v2.end(), show);


}

查找算法

STL常用的查找算法
void show(int& n)
{

	cout << n << endl;
	//此外还可以在这里对n进行修改,改变容器里元素的值
}

int show1(int& n)
{

	return n + 100;
}

bool show3(int& n)
{
	if (n > 2)
		return true;

	else
		return false;
}


bool show4(int& n)
{
	if (n > 3)
		return true;
	else
		return false;

}

int main()
{
	vector<int> v1;
	for (int i = 0; i < 10; ++i)
		v1.push_back(i);
	//for_each(v1.begin(), v1.end(), show);

	vector<int> v2;
	//v2.resize(v1.size());//等于v2(10)
	//transform()的使用
	//transform(v1.begin(), v1.end(), v2.begin(), show1);//改变v1容器中的值,并把结果放入v2中
	//for_each(v2.begin(), v2.end(), show);

	v1.push_back(2);

	//find()

	vector<int>::iterator it1;
	it1 = find(v1.begin(), v1.end(), 2);//找出容器中第一个等于2的位置


	//find_if()

	vector<int>::iterator it2;
	it2 = find_if(v1.begin(), v2.end(), show3);//最后一个是谓词对象
	//这里出现异常


	//adjacent_find()

	vector<int>::iterator it3;
	it3 = adjacent_find(v1.begin(), v1.end());//找出容器中第一个重复的元素的迭代器


	//count()
	int n;
	n = count(v1.begin(), v1.end(), 2);//容器中等于2的个数

	//count_if()
	n = count_if(v1.begin(), v1.end(), show4);//容器中元素大于3的个数


}

排序算法

int main()
{
vector<int> v1;
v1.push_back(1);
v1.push_back(6);
v1.push_back(5);

vector<int> v2;
v2.push_back(2);
v2.push_back(4);
v2.push_back(6);


vector<int> v3;
v3.resize(v1.size() + v2.size());
merge(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());
for (int i = 0; i < 5; i++)
{
	cout << v3[i] << endl;
}
sort(v1.begin(), v1.end());
for (vector<int>::iterator it=v1.begin();it!=v1.end();it++)
	cout << *it << endl;

拷贝与替换

//拷贝与替换
vector<int> v4;
v4.resize(v1.size());
copy(v1.begin(), v1.end(), v4.begin());//实现拷贝
replace(v1.begin(), v1.end(), 1, 2);//将容器中的1变成2
replace_if(v1.begin(), v1.end(), bigger5, 1);//将容器中大于5的数编程1,用谓词实现
swap(v1, v2);//交换两个容器中的内容
fill(v1.begin(), v1.end(), 8);//将容器里的内容都变为8

常用的算术算法

int tmp = accumulate(v1.begin(), v1.end(), 10);//把容器中的值累加并加上一个10返回
vector<int> v5;
v5.resize(v1.size() + v2.size());
set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), v5.begin());//得到两个容器的并级
同样的set_intersection()得到两个容器的交集,set_diffrence()得到第一个容器中有的元素而第二个容器中没有的元素。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值