当我们有一个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