当我们有一个vector<int>型数组vec时,我们只需要获取它的最大值,而又不想打乱它的顺序
一、求数组的最大值或最小值
1、vector容器
例 vector<int> 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);
二、求数组最大值最小值对应的下标
1、vector容器
例 vector<int> 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;
注意:返回的是第一个最大(小)元素的位置。
#include <iostream>
#include <vector>
#include <algorithm>
int main(){
std::vector<int> a = { 2,4,6,7,1,0,8,9,6,3,2 };
auto maxPosition = std::max_element(a.begin(), a.end()); // 最小值min_element
std::cout << *maxPosition << " at the position of " << maxPosition - a.begin() << std::endl;
return 0;
}
输出:
9 at the position of 7
版权声明:本文为u013250861原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。