Defined in header <utility> | ||||
---|---|---|---|---|
| (1) | (until C++14) | ||
| (1) | (since C++14) | ||
| (2) | (until C++14) | ||
| (2) | (since C++14) | ||
| (3) | (until C++14) | ||
| (3) | (since C++14) | ||
| (4) | (until C++14) | ||
| (4) | (since C++14) | ||
| (5) | (until C++14) | ||
| (5) | (since C++14) | ||
| (6) | (until C++14) | ||
| (6) | (since C++14) |
1-2) Tests if both elements of lhs and rhs are equal, that is, compares
lhs.first
with rhs.first
and lhs.second
with rhs.second
3-6) Compares
lhs
and rhs
lexicographically, that is, compares the first elements and only if they are equivalent, compares the second elements.Parameters
lhs, rhs | - | pairs to compare |
Return value
1) true
if both lhs.first == rhs.first
and lhs.second == rhs.second
, otherwise false
.
2) true
if either lhs.first != rhs.first
or lhs.second != rhs.second
, otherwise false
.
3) If lhs.first<rhs.first
, returns true
. Otherwise, if rhs.first<lhs.first
, returns false
. Otherwise, if lhs.second<rhs.second
, returns true
. Otherwise, returns false
.
4) !(rhs < lhs)
.
5) rhs < lhs
.
6) !(lhs < rhs)
.
Example
Because operator< is defined for pairs, containers of pairs can be sorted.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <iostream> #include <utility> #include <vector> #include <algorithm> #include <string> int main() { std::vector<std::pair< int , std::string>> v = { {2, "baz" }, {2, "bar" }, {1, "foo" } }; std::sort(v.begin(), v.end()); for (auto p: v) { std::cout << "(" << p.first << "," << p.second << ")\n" ; } } |
Output:
1 2 3 | (1,foo) (2,bar) (2,baz) |
Please login to continue.