动态规划中,常常需要找到一个线性表中最大的元素,C++ 最常用的是vector,而不是 C 中的数组,固然布局更加复杂,但是用起来更方便。就连 C++ 创始人 Bjarne Stroustrup 都推荐使用vector,如下是《A Tour of C++ Third Edition》中的内容,而且也强调不用担心效率问题:
C++ 算法库中有相应的找到最大值的算法。所以第一步导入库:
相应算法是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;
- }
复制代码 盼望能帮到有需要的人~
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |