You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取数组/vector中最大元素的最大索引?

获取数组中最大元素的最后出现索引

目前我知道两种方法,但想找更简便的实现方式:

方法一:返回最大元素的最小索引

用标准库的max_element直接查找,但它返回的是第一个(最小索引)最大元素的迭代器:

vector<int> nums= {3,2,1,0,2,3,3,1,0,0}; 
return max_element(nums.begin(), nums.end())-nums.begin(); 

这个方法不符合需求,因为它返回的是最大元素的最小索引。

方法二:反向遍历找最后一个最大元素

先获取最大值,再从数组末尾反向遍历找到第一个匹配的元素:

vector<int> nums= {3,2,1,0,2,3,3,1,0,0}; 
int n = *max_element(nums.begin(), nums.end());
for(int i=nums.size()-1; i>-1; i--){    
    if(nums[i]==n) {       
        return i;        
        break;     
    }
}

但这个方法需要手动写循环遍历,想知道有没有更简便的方式。

更简便的实现:用反向迭代器结合max_element

直接利用反向迭代器,让max_element从数组末尾开始查找,这样找到的就是原数组中最后出现的最大元素,再计算对应的原数组索引即可:

vector<int> nums = {3,2,1,0,2,3,3,1,0,0};
auto last_max_it = max_element(nums.rbegin(), nums.rend());
// 计算原数组中的索引
return nums.size() - 1 - distance(nums.rbegin(), last_max_it);

或者更简洁的写法:

return nums.size() - (max_element(nums.rbegin(), nums.rend()) - nums.rbegin()) - 1;

这个方法完全借助标准库函数实现,无需手动写循环,代码更简洁且可读性更高。

内容的提问来源于stack exchange,提问作者yokgn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 13:03:17