最大值max_element,最小值min_element,求和accumulate

min_element 和 max_element头文件是algorithm,返回值是一个迭代器

accumulate 头文件是numeric,第三个参数是初始值,返回值是一个数

举个栗子

#include <algorithm>
#include <iostream>
#include <vector>
#include <numeric> 

using namespace std;

int main() {
    int a[] = {1, 2, 3, 4, 5};
    vector<int> v({1, 2, 3, 4, 5});

    // 普通数组
    int minValue = *min_element(a, a + 5); 
    int maxValue = *max_element(a, a + 5); 
    int sumValue = accumulate(a, a + 5, 0);
 
    // Vector数组
    int minValue2 = *min_element(v.begin(), v.end());
    int maxValue2 = *max_element(v.begin(), v.end());
    int sumValue2 = accumulate(v.begin(), v.end(), 0);

    cout << minValue << endl;
    cout << maxValue << endl;
    cout << sumValue << endl << endl;

    cout << minValue2 << endl;
    cout << maxValue2 << endl;
    cout << sumValue2 << endl << endl;
    return 0;
}

输出

1
5
15

1
5
15

max_element()及min_element()函数 时间复杂度 O ( n ) O(n) O(n)

C++数组或vector求最大值最小值

可以用max_element()min_element()函数,二者返回的都是迭代器或指针

头文件:#include<algorithm>

函数源代码

template <class ForwardIterator>
 ForwardIterator max_element ( ForwardIterator first, ForwardIterator last )
{
 if (first==last) return last;
 ForwardIterator largest = first;

 while (++first!=last)
   if (*largest<*first)    // or: if (comp(*largest,*first)) for version (2)
     largest=first;
 return largest;
}

上面的源码,解释了为什么可以有max_element(a, a + 5);的用法
相当于first = a,last = a + 5;

*first = *a = *(a + 0) = a[0];
*last = *(a + 5) = a[5];

示例:

int a[5] = {0, 3, 9, 4, 5};
int *b; 
b = max_element(a, a+5);
cout << *b;

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<int> vec

最大值下标:int maxPosition = max_element(v.begin(),v.end()) - v.begin();

最小值下标:int minPosition = min_element(v.begin(),v.end()) - v.begin();

2)普通数组

int a[]={1,2,3,4,5,6};(数组名a就是地址)

最大值下标:int maxPosition = max_element(a,a+6) - a;

最小值下标:int minPosition = min_element(a,a+6) - a;

注意:返回的是第一个最大(小)元素的位置

GitHub 加速计划 / eleme / element
54.06 K
14.63 K
下载
A Vue.js 2.0 UI Toolkit for Web
最近提交(Master分支:3 个月前 )
c345bb45 7 个月前
a07f3a59 * Update transition.md * Update table.md * Update transition.md * Update table.md * Update transition.md * Update table.md * Update table.md * Update transition.md * Update popover.md 7 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐