
- C++ Library - Home
- C++ Library - <fstream>
- C++ Library - <iomanip>
- C++ Library - <ios>
- C++ Library - <iosfwd>
- C++ Library - <iostream>
- C++ Library - <istream>
- C++ Library - <ostream>
- C++ Library - <sstream>
- C++ Library - <streambuf>
- C++ Library - <atomic>
- C++ Library - <complex>
- C++ Library - <exception>
- C++ Library - <functional>
- C++ Library - <limits>
- C++ Library - <locale>
- C++ Library - <memory>
- C++ Library - <new>
- C++ Library - <numeric>
- C++ Library - <regex>
- C++ Library - <stdexcept>
- C++ Library - <string>
- C++ Library - <thread>
- C++ Library - <tuple>
- C++ Library - <typeinfo>
- C++ Library - <utility>
- C++ Library - <valarray>
- The C++ STL Library
- C++ Library - <array>
- C++ Library - <bitset>
- C++ Library - <deque>
- C++ Library - <forward_list>
- C++ Library - <list>
- C++ Library - <map>
- C++ Library - <multimap>
- C++ Library - <queue>
- C++ Library - <priority_queue>
- C++ Library - <set>
- C++ Library - <stack>
- C++ Library - <unordered_map>
- C++ Library - <unordered_set>
- C++ Library - <vector>
- C++ Library - <algorithm>
- C++ Library - <iterator>
- The C++ Advanced Library
- C++ Library - <any>
- C++ Library - <barrier>
- C++ Library - <bit>
- C++ Library - <chrono>
- C++ Library - <cinttypes>
- C++ Library - <clocale>
- C++ Library - <condition_variable>
- C++ Library - <coroutine>
- C++ Library - <cstdlib>
- C++ Library - <cstring>
- C++ Library - <cuchar>
- C++ Library - <charconv>
- C++ Library - <cfenv>
- C++ Library - <cmath>
- C++ Library - <ccomplex>
- C++ Library - <expected>
- C++ Library - <format>
- C++ Library - <future>
- C++ Library - <flat_set>
- C++ Library - <flat_map>
- C++ Library - <filesystem>
- C++ Library - <generator>
- C++ Library - <initializer_list>
- C++ Library - <latch>
- C++ Library - <memory_resource>
- C++ Library - <mutex>
- C++ Library - <mdspan>
- C++ Library - <optional>
- C++ Library - <print>
- C++ Library - <ratio>
- C++ Library - <scoped_allocator>
- C++ Library - <semaphore>
- C++ Library - <source_location>
- C++ Library - <span>
- C++ Library - <spanstream>
- C++ Library - <stacktrace>
- C++ Library - <stop_token>
- C++ Library - <syncstream>
- C++ Library - <system_error>
- C++ Library - <string_view>
- C++ Library - <stdatomic>
- C++ Library - <variant>
- C++ STL Library Cheat Sheet
- C++ STL - Cheat Sheet
- C++ Programming Resources
- C++ Programming Tutorial
- C++ Useful Resources
- C++ Discussion
C++ multimap::equal_range() Function
The C++ std::multimap::equal_range() function is used to returns a pair of iterators representing the range of elements with a specific key. It allows the retrieval of all entries matching a given key. The first iterator points to the first element with the key, and the second iterator points just past the last element with the key. The time complexity of this function is logarithmic i.e.O(log n).
Syntax
Following is the syntax for std::multimap::equal_range() function.
pair<const_iterator,const_iterator> equal_range (const key_type& k) const; pair<iterator,iterator>equal_range (const key_type& k);
Parameters
- k − It indicates the key to be searched.
Return value
This function returns a pair of iterator.
Example
Let's look at the following example, where we are going to demonstrate the baisc usage of equal_range() function.
#include <iostream> #include <map> int main() { std::multimap<int, std::string> a = {{1, "A"}, {2, "B"}, {3, "C"}, {3, "D"}}; auto x = a.equal_range(3); std::cout << "Elements with key 3:" << std::endl; for (auto y = x.first; y != x.second; ++y) { std::cout << y->first << ": " << y->second << std::endl; } return 0; }
Output
Output of the above code is as follows −
Elements with key 3: 3: C 3: D
Example
Consider the following example, where we are going to modify the elements in the range.
#include <iostream> #include <map> int main() { std::multimap<int, std::string> a; a.insert({1, "A"}); a.insert({1, "B"}); a.insert({2, "Tutorix"}); auto x = a.equal_range(1); for (auto y = x.first; y != x.second; ++y) { y->second = "TutorialsPoint"; } for (const auto& pair : a) { std::cout << pair.first << ": " << pair.second << std::endl; } return 0; }
Output
Following is the output of the above code −
1: TutorialsPoint 1: TutorialsPoint 2: Tutorix
Example
In the following example, we are going to handle the non existing key.
#include <iostream> #include <map> int main() { std::multimap<int, std::string> a = {{1, "apple"}, {2, "banana"}, {2, "blueberry"}}; auto x = a.equal_range(3); if (x.first == x.second) { std::cout << "No element found with provided key." << std::endl; } else { for (auto y = x.first; y != x.second; ++y) { std::cout << y->first << ": " << y->second << std::endl; } } return 0; }
Output
If we run the above code it will generate the following output −
No element found with provided key.
Example
Following is the example, where we are going to erase the elements in the range.
#include <iostream> #include <map> int main() { std::multimap<int, std::string> a = {{1, "Hi"}, {1, "Hello"}, {2, "Vanakam"}}; auto x = a.equal_range(1); a.erase(x.first, x.second); std::cout << "Elements after erasing :" << std::endl; for (const auto& pair : a) { std::cout << pair.first << ": " << pair.second << std::endl; } return 0; }
Output
Let us compile and run the above program, this will produce the following result −
Elements after erasing : 2: Vanakam