C++头文件algorithm中常用函数测试


其中涉及到用地址来确定使用范围的函数,逗号前均为迭代器或数组中需要操作元素段的头部地址,逗号后为需要操作元素段的尾部地址
例:sort(a,a+2)
上述操作对a[0],a[1],进行排序。

1.max(),min(),abs()测试

min()功能:比较并返回两数中最大元素;文档地址

max()功能:比较并返回两数中最小元素;文档地址
abs()功能:返回绝对值。

max,min,abs,对字符串不适用,max,min比较字符时,比较的是ASCII码,直接cout出字符,而abs后直接cout出ASCII码。
测试代码

#include"iostream"
#include"algorithm"
using namespace std;

int main()
{
	cout<<"max(12,15)="<<max(12,15)<<endl;//返回最大值
	cout<<"max(1.1,2.2)="<<max(1.1,2.2)<<endl;
	cout<<"max('a','A')="<<max('a','A')<<endl;
	
	cout<<"min(12,15)="<<min(12,15)<<endl;//返回最小值

	cout<<"abs(12-15)="<<abs(12-15)<<endl;//返回绝对值
	cout<<"abs(1.1-2.2)="<<abs(1.1-2.2)<<endl;
	cout<<"abs('a'-'A')="<<abs('a'-'A')<<endl;
	return 0;
}

输出结果

max(12,15)=15
max(1.1,2.2)=2.2
max(‘a’,‘A’)=a
min(12,15)=12
abs(12-15)=3
abs(1.1-2.2)=1.1
abs(‘a’-‘A’)=32

2.swap()测试

功能:交换两数
经过测试,swap对double,int,字符,字符串均适用。
文档地址
测试代码

#include"iostream"
#include"string"
#include"algorithm"
using namespace std;

int main()
{
	int a=1,b=2;
	double aa=1.1,bb=2.2;
	char aaa='a',bbb='b';
	string aaaa="aa",bbbb="bb";
	swap(a,b);
	swap(aa,bb);
	swap(aaa,bbb);
	swap(aaaa,bbbb);
	cout<<"a="<<a<<"\tb="<<b<<endl;
	cout<<"aa="<<aa<<"\tbb="<<bb<<endl;
	cout<<"aaa="<<aaa<<"\tbbb="<<bbb<<endl;
	cout<<"aaaa="<<aaaa<<"\tbbbb="<<bbbb<<endl;
	return 0;
}

输出结果

a=2 b=1
aa=2.2 bb=1.1
aaa=b bbb=a
aaaa=bb bbbb=aa

3.reverse()测试

功能:反转数组。
对string操作时,用迭代器更为方便,begin和end能直接当参数,对整个串操作。
文档地址
测试代码

#include"iostream"
#include"string"
#include"algorithm"
using namespace std;

int main()
{
	int a[5]={1,2,3,4,5};//初始化
	char s[5]("abcd");
	string ss("abcd");
	
	reverse(a,a+5);//反转
	reverse(s,s+4);
	reverse(ss.begin(),ss.end());//用迭代器操作

	for(int i=0;i<5;i++)//输出
		cout<<a[i]<<" ";
	cout<<endl;
	cout<<s<<endl;
	cout<<ss<<endl;
	return 0;
}

输出结果

5 4 3 2 1
dcba
dcba

4.next_permutation()测试

暂时不知道用来干啥。
文档地址
测试代码

#include"iostream"
#include"string"
#include"algorithm"
using namespace std;

int main()
{
	string s("abc");
	while(next_permutation(s.begin(),s.end()))
		cout<<s<<endl;
	return 0;
}

输出结果

acb
bac
bca
cab
cba

5.fill()测试

功能:填充数组或给数组内的一段元素赋值。
文档地址
测试代码

#include"iostream"
#include"string"
#include"algorithm"
using namespace std;

int main()
{
	int a[10]={0};
	string s("abcdef");
	fill(a,a+10,3);
	fill(s.begin()+1,s.end()-1,'s');
	for(int i=0;i<10;i++)cout<<a[i]<<" ";
	cout<<endl;
	cout<<s<<endl;
	return 0;
}

输出结果

3 3 3 3 3 3 3 3 3 3
assssf

6.sort()测试

功能:排序
文档地址
测试代码

#include"iostream"
#include"string"
#include"algorithm"
using namespace std;

bool com (int a,int b)//降序
{
	return a>b;
}
int main()
{
	int a[10];
	string s("fedcba");
	for(int i=0;i<10;i++)a[i]=i;
	sort(a,a+10,com);//降序
	sort(s.begin(),s.end());//升序
	for(int i=0;i<10;i++)cout<<a[i]<<" ";
	cout<<endl;
	cout<<s<<endl;
	return 0;
}

输出结果

9 8 7 6 5 4 3 2 1 0
abcdef

7. lower_bound(),upper_bound()测试

lower_bound()功能:返回序列中第一个不小于(大于等于)所找值的指针或迭代器
upper_bound()功能:返回序列中第一个大于所找值的指针或迭代器

lower_bound文档
upper_bound文档
测试代码

#include"iostream"
#include"string"
#include"algorithm"
using namespace std;

int main()
{
	int a[5]={1,2,3,4,5};
	string s("abcde");
	int *p1=upper_bound(a,a+5,3);
	int *p2=lower_bound(a,a+5,3);
	string::iterator q1=upper_bound(s.begin(),s.end(),'d');//string返回的是迭代器
	string::iterator q2=lower_bound(s.begin(),s.end(),'d');
	cout<<*p1<<endl;
	cout<<*p2<<endl;
	cout<<*q1<<endl;//迭代器用法与指针很像
	cout<<*q2<<endl;
	return 0;
}

输出结果

4
3
e
d

猜你喜欢

转载自blog.csdn.net/qq_43508196/article/details/86265518