似乎vector的函数max_element可以用于此目的,但我不知道如何使用它。
ForwardIterator max_element (ForwardIterator first, ForwardIterator last);
ForwardIterator的类型是什么?如何指定从第m个元素开始搜索?我如何找到max元素的索引?感谢。
答案 0 :(得分:5)
使用以下内容:
std::max_element(vec.begin() + m, vec.begin() + n);
假设m < n
和n <= vec.size()
,其中vec
是std::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
的情况。