看起来vector的函数max_element可以用于这个目的,但我不确定如何使用它。如何在C++中查找矢量的第m个元素和第n个元素之间的最大元素?
ForwardIterator max_element (ForwardIterator first, ForwardIterator last);
ForwardIterator的类型是什么?我如何指定它从第m个元素开始搜索?我如何找到最大元素的索引?谢谢。
看起来vector的函数max_element可以用于这个目的,但我不确定如何使用它。如何在C++中查找矢量的第m个元素和第n个元素之间的最大元素?
ForwardIterator max_element (ForwardIterator first, ForwardIterator last);
ForwardIterator的类型是什么?我如何指定它从第m个元素开始搜索?我如何找到最大元素的索引?谢谢。
使用以下:
std::max_element(vec.begin() + m, vec.begin() + n);
假设m < n
和n <= vec.size()
,其中vec
是std::vector
对象。
这将返回一个迭代器到指定范围内的最大值元素,以获得相应的索引使用it - vec.begin()
,其中it
是最大元素迭代器。
此签名告诉你std::max_element
是一个接受任何类型参数的模板,只要它符合前向迭代器的要求并返回相同的类型即可。您只需传入迭代器,它会将迭代器返回到范围中找到的最大元素。您可以解除引用以获取该值本身。因此
const auto max_iterator = std::max_element(v.begin() + m, v.begin() + n);
const auto max_value = *i;
必须小心,以避免其中m
大于或等于n
的情况。
那我怎么知道哪个元素是最大元素? – Resorter
'std :: max_element'将迭代器返回到范围中的最大元素。 – ArchbishopOfBanterbury
但是我需要知道这个元素的位置,例如,我想知道它是第一个,第二个还是第三个元素。我想知道指定位置的整数。 – Resorter