
- 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++ Algorithm Library - lexicographical_compare() Function
Description
The C++ function std::algorithm::lexicographical_compare() tests whether one range is lexicographically less than another or not. A lexicographical comparison is the kind of comparison generally used to sort words alphabetically in dictionaries.
Declaration
Following is the declaration for std::algorithm::lexicographical_compare() function form std::algorithm header.
C++98
template <class InputIterator1, class InputIterator2, class Compare> bool lexicographical_compare(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2,Compare comp);
Parameters
first1 − Input iterator to the initial position of the first sequence.
last1 − Input iterator to the final position of the first sequence.
first2 − Input iterator to the initial position of the second sequence.
last2 − Input iterator to the final position of the second sequence.
comp − A binary function which accepts two arguments and returns bool.
Return value
Returns true if one range is lexicographically less than second otherwise returns false.
Exceptions
Throws exception if either the binary function or an operation on an iterator throws exception.
Please note that invalid parameters cause undefined behavior.
Time complexity
2 * min(N1, N2) where N1 = std::distance(first1, last1) and N2 = std::distance(first2, last2).
Example
The following example shows the usage of std::algorithm::lexicographical_compare() function.
#include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; bool ignore_case(string s1, string s2) { return true; } int main(void) { vector<string> v1 = {"one", "two"}; vector<string> v2 = {"One", "Two", "Three"}; bool result; result = lexicographical_compare(v1.begin(), v1.end(), v2.begin(), v2.end()); if (result == false) cout << "v1 is not less than v2." << endl; result = lexicographical_compare(v1.begin(), v1.end(), v2.begin(), v2.end(), ignore_case); if (result == true) cout << "v1 is less than v2." << endl; return 0; }
Let us compile and run the above program, this will produce the following result −
v1 is not less than v2. v1 is less than v2.