目录
其中涉及到用地址来确定使用范围的函数,逗号前均为迭代器或数组中需要操作元素段的头部地址,逗号后为需要操作元素段的尾部地址
例: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