在向量中查找最大和最小元素和相应索引

要查找存储在向量中的最大或最小元素,可以分别使用 std::max_elementstd::min_element 方法。这些方法在 <algorithm> 标题中定义。如果几个元素等同于最大(最小)元素,则该方法将迭代器返回到第一个这样的元素。返回 v.end() 为空向量。

std::vector<int> v = {5, 2, 8, 10, 9}; 
int maxElementIndex = std::max_element(v.begin(),v.end()) - v.begin();
int maxElement = *std::max_element(v.begin(), v.end());

int minElementIndex = std::min_element(v.begin(),v.end()) - v.begin();
int minElement = *std::min_element(v.begin(), v.end());

std::cout << "maxElementIndex:" << maxElementIndex << ", maxElement:" << maxElement << '\n';
std::cout << "minElementIndex:" << minElementIndex << ", minElement:" << minElement << '\n';

输出:

maxElementIndex:3,maxElement:10
minElementIndex:1,minElement:2

Version >= C++ 11

可以使用方法 std::minmax_element 同时检索向量中的最小和最大元素, std::minmax_element 也在 <algorithm> 标头中定义 :

std::vector<int> v = {5, 2, 8, 10, 9}; 
auto minmax = std::minmax_element(v.begin(), v.end());

std::cout << "minimum element: " << *minmax.first << '\n';
std::cout << "maximum element: " << *minmax.second << '\n';

输出:

最小元素:2
最大元素:10