PAT 刷题遇到的tips

本文详细介绍了STL中max_element与min_element函数的使用方法,包括如何求数组和vector容器的最大值、最小值及其对应下标,并提供了代码示例。同时,还讲解了STL sort函数的用法,以及数字与字符串之间的转换技巧。

stl的max函数
max_element()及min_element()函数,二者返回的都是迭代器或指针。
头文件:#include algorithm
1.求数组的最大值或最小值
1)vector容器
例 vector vec
最大值:int maxValue = *max_element(v.begin(),v.end());
最小值:int minValue = *min_element(v.begin(),v.end());
2)普通数组
例 a[]={1,2,3,4,5,6};
最大值:int maxValue = *max_element(a,a+6);
最小值:int minValue = *min_element(a,a+6);
2.求数组最大值最小值对应的下标
1)vector容器
例 vector vec
最大值下标:int maxPosition = max_element(v.begin(),v.end()) - v.begin();
最小值下标:int minPosition = min_element(v.begin(),v.end()) - v.begin();
2)普通数组
例 a[]={1,2,3,4,5,6};
最大值下标:int maxPosition = max_element(a,a+6) - a;
最小值下标:int minPosition = min_element(a,a+6) - a;
注意:返回的是第一个最大(小)元素的位置。

STL–sort
sort(first_pointer,first_pointer+n,cmp)
参数解释: 第一个参数是数组的首地址,一般写上数组名就可以,因为数组名是一个指针常量。第二个参数相对较好理解,即首地址加上数组的长度n(代表尾地址的下一地址)。最后一个参数是比较函数的名称(自定义函数cmp),这个比较函数可以不写,即第三个参数可以缺省,这样sort会默认按数组升序排序。

简单例子:对数组A的0~n-1元素进行升序排序,只要写sort(A,A+n)即可;
对于向量V也一样,sort(v.begin(),v.end())即可。

bool myfunction (int i,int j) { return (i<j); }//升序排列
bool myfunction2 (int i,int j) { return (i>j); }//降序排列
sort (myvector.begin(), myvector.begin()+4,myfunction2)

cout<<setw(3)<<setfill(‘0’)<<a<<endl;

在这里插入图片描述
利用stringstream
添加头文件 #include
数字转字符串

   #include <string>
  #include <sstream>
  int main(){
    double a = 123.32;
    string res;
    stringstream ss;          定义流ss
    ss << a;                       将数字a转化成流ss
    ss >> res;                    将流ss转化成字符串
    return 0;
  }

字符串转数字

  #include <string>
  #include <sstream>
  int main(){
    double a ;
    string res= "123.32";
    stringstream ss;  
    ss << res;                  
    ss >> a;
    return 0;
  }

数字字符转换为数字:
1)最简单的是让数字字符去减‘0’得到的就是数字的值。
示例如下:

char c=‘0’; //'1','2','3',.....'9'
int num=0;
num = int(c - '0');

数字转换为数字字符
和数字字符转数字相反 我们可以加上 ‘0’的ASCII 就可以变为char类型
int a=1;
char c=a+‘0’; //c的值就是’1’的ASCII码值

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nature68c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值