operator==,!=,<,<=,>,>=(std::pair)
来自cppreference.com
定义于头文件 <utility>
|
||
template< class T1, class T2 > bool operator==( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs ); |
(1) | (C++14 前) |
template< class T1, class T2 > constexpr bool operator==( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs ); |
(1) | (C++14 起) |
template< class T1, class T2 > bool operator!=( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs ); |
(2) | (C++14 前) |
template< class T1, class T2 > constexpr bool operator!=( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs ); |
(2) | (C++14 起) |
template< class T1, class T2 > bool operator<( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs ); |
(3) | (C++14 前) |
template< class T1, class T2 > constexpr bool operator<( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs ); |
(3) | (C++14 起) |
template< class T1, class T2 > bool operator<=( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs ); |
(4) | (C++14 前) |
template< class T1, class T2 > constexpr bool operator<=( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs ); |
(4) | (C++14 起) |
template< class T1, class T2 > bool operator>( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs ); |
(5) | (C++14 前) |
template< class T1, class T2 > constexpr bool operator>( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs ); |
(5) | (C++14 起) |
template< class T1, class T2 > bool operator>=( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs ); |
(6) | (C++14 前) |
template< class T1, class T2 > constexpr bool operator>=( const pair<T1,T2>& lhs, const pair<T1,T2>& rhs ); |
(6) | (C++14 起) |
1-2) 测试 lhs 和 rhs 的两个元素是否均相等,即比较
lhs.first
和 rhs.first
及 lhs.second
和 rhs.second
3-6) 按字典序比较
lhs
和 rhs
,即比较首元素,然后仅若它们相等,再比较第二元素。参数
lhs, rhs | - | 要比较的 pair |
返回值
1) 若 lhs.first == rhs.first
且 lhs.second == rhs.second
则为 true ,否则为 false
2) !(lhs == rhs)
3) 若 lhs.first<rhs.first
则返回 true 。否则,若 rhs.first<lhs.first
则返回 false 。否则,若 lhs.second<rhs.second
则返回 true 。否则返回 false 。
4) !(rhs < lhs)
5) rhs < lhs
6) !(lhs < rhs)
示例
因为 operator< 为 pair 定义,故 pair 的容器能排序。
运行此代码
#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"; } }
输出:
(1,foo) (2,bar) (2,baz)