C++ 如何在C+中找到向量的第m个和第n个元素之间的最大元素+;?

C++ 如何在C+中找到向量的第m个和第n个元素之间的最大元素+;?,c++,vector,C++,Vector,向量的函数max_元素似乎可以用于此目的,但我不确定如何使用它 ForwardIterator max_element (ForwardIterator first, ForwardIterator last); ForwardIterator的类型是什么?如何指定从第m个元素开始搜索?如何找到max元素的索引?谢谢。请使用以下命令: std::max_element(vec.begin() + m, vec.begin() + n); 假设m

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

ForwardIterator max_element (ForwardIterator first, ForwardIterator last);
ForwardIterator的类型是什么?如何指定从第m个元素开始搜索?如何找到max元素的索引?谢谢。

请使用以下命令:

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

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

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

必须注意避免出现
m
大于或等于
n

的情况,那么如何知道哪个元素是max元素?
std::max_元素
将迭代器返回到范围内的max元素。只需使用
it-vec.begin()
获取索引,其中
它是max元素iterator@Resorter:
std::vector
为0索引
m
n
需要是基于0的值。@Archbishopfanterbury如果容器发生变化,获取位置的更通用方法是
std::distance(vec.begin(),it)