algorithm头文件
最大值max_element和 最小值min_element
作用:
求C++数组或vector求最大值最小值,二者返回的都是迭代器或指针,可以通过*符号来获得值
时间复杂度:O(n)
数组
#include <iostream>
#include <algorithm>
using namespace std;
struct Ballons{
int cnt;
string s;
};
int main() {
int a[] = {3, 6, 8, 2};
int len = sizeof(a) / sizeof(int);
//*为获取地址内存空间的元素
cout << *max_element(a, a + len) << endl;//8//输出最大元素
cout << max_element(a, a + len) << endl;//输出的为最大值的地址值
cout << max_element(a, a + len) - a << endl;//2 //最大元素的下标
cout << *min_element(a, a + len) << endl;//2
return 0;
}
vector容器
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> v;
v.push_back(7); v.push_back(4);
v.push_back(2); v.push_back(9);
cout << *max_element(v.begin(), v.end()) << endl;//9
cout << *min_element(v.begin(), v.end()) << endl;//2
return 0;
}
注释:
数组:int position=max_element(a,a+n)-a;
int data=*max_element(a,a+n);
容器: int position=max_element(v.begin(), v.end())-v.begin();
int it = *max_element(v.begin(), v.end());
string: int position=max_element(s.begin(), s.end())-s.begin();
char it=*max_element(s.begin(),s.end());
min_element()函数也是一样的用法,这里要注意的是如果有多个最大值或者最小值,返回的是第一次出现的位置。