sorting using comparator in c++
To sort elements using a comparator in C++, you can follow these steps:
- Define a custom comparator function that takes two elements as input and returns a boolean value indicating their order. The comparator function should have the following signature:
bool comparator(const T& a, const T& b);
Here, T
represents the type of the elements being sorted.
- Use the
std::sort
algorithm from the<algorithm>
library to sort the elements. Thestd::sort
function takes three parameters: the starting iterator, the ending iterator, and the comparator function. For example:
std::sort(startIterator, endIterator, comparator);
In this case, startIterator
represents the iterator pointing to the first element to be sorted, endIterator
represents the iterator pointing to one position past the last element to be sorted, and comparator
is the custom comparator function.
The
std::sort
algorithm internally uses the comparator function to compare pairs of elements and determine their order. The comparator function should returntrue
if the first element should come before the second element in the sorted sequence, andfalse
otherwise.After the sorting process, the elements will be rearranged in the specified order according to the comparator function.
Here's an example that demonstrates sorting integers in descending order using a custom comparator:
#include <iostream>
#include <algorithm>
#include <vector>
bool descendingComparator(const int& a, const int& b) {
return a > b;
}
int main() {
std::vector<int> numbers = {5, 2, 8, 1, 6};
std::sort(numbers.begin(), numbers.end(), descendingComparator);
for (const auto& number : numbers) {
std::cout << number << " ";
}
return 0;
}
In this example, the descendingComparator
function compares two integers a
and b
and returns true
if a
is greater than b
. The std::sort
algorithm uses this comparator to sort the numbers
vector in descending order. Finally, the sorted elements are printed to the console: 8 6 5 2 1.