C++中,如何找到一个vector中最大的元素

动态规划中,经常需要找到一个线性表中最大的元素,C++ 最常用的是vector,而不是 C 中的数组,虽然结构更加复杂,但是用起来更方便。就连 C++ 创始人 Bjarne Stroustrup 都推荐使用vector,如下是《A Tour of C++ Third Edition》中的内容,并且也强调不用担心效率问题:
请添加图片描述

C++ 算法库中有相应的找到最大值的算法。所以第一步导入库:

#include <algorithm>

相应算法是max_element:获取最大的元素,但是返回值是一个迭代器。 使用方法如下:

int main() {
	//测试数组
    std::vector<int> nums = {2,7,9,3,1};
    //存放最大值的迭代器
    std::vector<int>::iterator maxNum = max_element(nums.begin(),nums.end());
	//输出最大值
    cout << *maxNum << endl;
    
    return 0;
}

需要注意还有个叫max的函数,那个是找两个元素里较大的一个的,不是找数组里的。

那么如何获取这个最大值的位置呢?这里需要使用distance函数:

int main() {
	//测试数组
    std::vector<int> nums = {2,7,9,3,1};
    //存放最大值的迭代器
    std::vector<int>::iterator maxNum = max_element(nums.begin(),nums.end());
	//通过distance得到最大值和第一个元素之间的距离,得到最大值的下标
    cout << distance(nums.begin(), maxNum) << endl;
    
    return 0;
}

希望能帮到有需要的人~

上一篇:WorkFlow源码剖析——Communicator之TCPServer(下)


下一篇:sudo docker ps才能查看,docker ps不能查看问题