动态规划中,经常需要找到一个线性表中最大的元素,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;
}
希望能帮到有需要的人~