如何在 C++ 中查找向量的第 m 和第 n 个元素之间的 max 元素

how to find the max element between the m-th and the n-th element of a vector in C++?

本文关键字:元素 和第 max 之间 C++ 查找 向量      更新时间:2023-10-16

似乎向量max_element函数可以用于此目的,但我不确定如何使用它。

ForwardIterator max_element (ForwardIterator first, ForwardIterator last);

前向迭代器的类型是什么?如何指定它从第 m 个元素开始搜索?我如何找到最大元素的索引?谢谢。

使用以下命令:

std::max_element(vec.begin() + m, vec.begin() + n);

假设m < nn <= vec.size(),其中vec是一个std::vector对象。

这将向指定范围内的 max-value 元素返回一个迭代器,以获取相应的索引使用it - vec.begin()其中 it 是 max-element 迭代器。

此签名告诉您,std::max_element是一个模板,只要它满足前向迭代器要求,它就接受任何类型的参数,并且返回相同的类型。您只需传入迭代器,它将迭代器返回到该范围中找到的最大元素。您可以取消引用它以获取值本身。因此

const auto max_iterator = std::max_element(v.begin() + m, v.begin() + n);
const auto max_value = *i;

必须注意避免m大于或等于n的情况。

相关文章: