Open In App

std::min_element in C++

Last Updated : 18 Oct, 2024
Suggest changes
Share
Like Article
Like
Report

The std::min_element() in C++ is an STL algorithm that is used to find the minimum element in a given range. This range can be array, vector, list or any other container. It is defined inside the <algorithm> header file. In this article, we will learn about the std::min_element() in C++.

Example:

C++
// C++ program to illustrate the use of // std::min_element() #include <bits/stdc++.h> using namespace std; bool comp (int a, int b) {  return a < b; } int main() {  vector<int> v = {2, 1, 17, 10};  int arr[4] = {33, 87, 1, 71};  int n = sizeof(arr) / sizeof(arr[0]);  // Min element in vector  cout << *min_element(v.begin(), v.end())  << endl;  // Min element in array  cout << *max_element(v.begin(), v.end());  return 0; } 

Output
1 17

std::min_element() Syntax

std::min_element(first, last, comp);

Parameters

  • first: Iterator to the first element of the range.
  • last: Iterator to the element just after the last element of the range.
  • comp: Binary function, functor or lambda expression that compares two elements in the range. By default, it is set as < operator.

Return Value

  • Returns an iterator to the smallest element in the range.
  • When the range is empty, it returns iterator to the last.

More Examples of std::min_element()

We can find the minimum element of the given range using std::min_element().

Example 1: Find Minimum Element in Array

C++
// C++ program to illustrate the use of  // std::min_element() in array #include <bits/stdc++.h> using namespace std; int main() {  int arr[] = {33, 87, 1, 71};  int n = sizeof(arr) / sizeof(arr[0]);    // Finding the minimum element in array  cout << *min_element(arr, arr + n);  return 0; } 

Output
1

Time Complexity: O(n), where n is the number of elements in array.
Auxiliary Space: O(1)

Example 2: Finding Minimum Element in Deque with Multiple Minimums

When there are multiple minimum elements present in the range, std::min_element() returns the iterator to the first minimum element.

C++
// C++ program to illustrate the use of  // std::min_element() in deque #include <bits/stdc++.h> using namespace std; int main() {  deque<int> d = {33, 1, 87, 1, 71, 1};  // Finding the minimum element in the deque  auto min = min_element(d.begin(), d.end());    // Finding the position  cout << "Index: " << distance(d.begin(), min);  return 0; } 

Output
Index: 1

Time Complexity: O(n), where n is the number of elements in deque.
Auxiliary Space: O(1)

Example 3: Find Minimum Element in Vector of User Defined Data Type

We have to use a custom comparator to determine how to compare user-defined data types based on any of their properties.

C++
// C++ Program to find the minimum element in  // the vector of structure #include <bits/stdc++.h> using namespace std; struct St {  string name;  int sno; }; int main() {    // Create a vector of structure  vector<St> v = {{"Ashok", 11}, {"Deepak", 15},   {"Anmol", 23}, {"Vikas", 19}};  // Find the minimum element in the vector of structure  // based on the sno field  St min = *min_element(v.begin(), v.end(),  [](const St &i, const St &j) {   return i.sno < j.sno;  });  cout << min.name << " " << min.sno;  return 0; } 

Output
Ashok 11

Time Complexity: O(n), where n is the number of elements in the vector.
Auxiliary Space: O(1)

Working of std::min_element()

std::min_element() implements a linear search algorithm to find the smallest element in the range. It compares each element of the range one by one using the iterator/pointer provided to it as arguments. This is the reason why it gives O(n) linear time complexity.

std::min_element() is not specialized for sorted containers such as std::set, std::map, etc., and still compares all the elements of these containers to find the minimum element.


Explore