c++ - 获取数组中最大值的索引
问题描述
我需要获取数组中最大值的索引。类似的东西std::max_element
。但是,如果有多个具有相同最大值的条目,我需要获取所有索引,而不仅仅是第一个。我该怎么做,使用 STL?
解决方案
当然,您可以使用它std::max_element
来完成最初的工作,但对于其余的工作,您可能需要使用std::find
或类似的东西。可能看起来像这样:
#include <algorithm>
#include <iostream>
#include <vector>
int main()
{
const auto vec = std::vector<int>({1, 2, 3, 2, 3, 0, 3, 2});
// Part 1: Find the maximum.
const auto max = std::max_element(vec.begin(), vec.end());
if (max == vec.end())
{
// Not required here, but in the general case an empty vector could occur.
std::cout << "Vector is empty." << std::endl;
return 0;
}
std::cout << "Maximum is " << *max << "." << std::endl;
// Part 2: Find all indices of elements equal to the maximum.
auto iterator = std::find(vec.begin(), vec.end(), *max);
while (iterator != vec.end())
{
std::cout << "found maximum at index " << std::distance(vec.begin(), iterator)
<< std::endl;
++iterator;
iterator = std::find(iterator, vec.end(), *max);
}
return 0;
}
在这种情况下,输出将是:
Maximum is 3.
found maximum at index 2
found maximum at index 4
found maximum at index 6
如果您的容器始终具有相同数量的元素,您也可以使用std::array
而不是。std::vector
推荐阅读
- java - 处理两个 DataStream
同时,在 flink 中找到一个 DataStream 包含来自其他 DataStream 的值? - python - Python 正则表达式前瞻断言
- laravel - Laravel Homestead - 随机“提取失败”错误
- python - Python/Tkinter - 为根窗口添加背景
- angular - 导航栏选项中的简单显示隐藏功能,用于以角度登录和注销。我想知道为什么它不起作用
- ios - 我可以通过更改渲染上下文而不是头文件来在 IOS 上使用 OpenGLES3.0 吗?
- reactjs - 使 React useEffect 仅在初始渲染和属性更改时运行
- c++ - 借助类中定义的成员函数在交换机中获取字符串输入
- java - 压缩从布局创建的位图时出现空指针异常
- php - 向每个数组元素添加另一个元素php