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

时间:2016-07-07 00:31:43

标签: c++ vector

似乎vector的函数max_element可以用于此目的,但我不知道如何使用它。

ForwardIterator max_element (ForwardIterator first, ForwardIterator last);

ForwardIterator的类型是什么?如何指定从第m个元素开始搜索?我如何找到max元素的索引?感谢。

2 个答案:

答案 0 :(得分:5)

使用以下内容:

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

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

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

答案 1 :(得分:2)

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

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

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