operator==,!=,<,<=,>,>=(std::tuple)
定义于头文件 <tuple>
|
||
template< class... TTypes, class... UTypes > bool operator==( const tuple<TTypes...>& lhs, |
(1) | (C++11 起) (C++14 前) |
template< class... TTypes, class... UTypes > constexpr bool operator==( const tuple<TTypes...>& lhs, |
(1) | (C++14 起) |
template< class... TTypes, class... UTypes > bool operator!=( const tuple<TTypes...>& lhs, |
(2) | (C++11 起) (C++14 前) |
template< class... TTypes, class... UTypes > constexpr bool operator!=( const tuple<TTypes...>& lhs, |
(2) | (C++14 起) |
template< class... TTypes, class... UTypes > bool operator<( const tuple<TTypes...>& lhs, |
(3) | (C++11 起) (C++14 前) |
template< class... TTypes, class... UTypes > constexpr bool operator<( const tuple<TTypes...>& lhs, |
(3) | (C++14 起) |
template< class... TTypes, class... UTypes > bool operator<=( const tuple<TTypes...>& lhs, |
(4) | (C++11 起) (C++14 前) |
template< class... TTypes, class... UTypes > constexpr bool operator<=( const tuple<TTypes...>& lhs, |
(4) | (C++14 起) |
template< class... TTypes, class... UTypes > bool operator>( const tuple<TTypes...>& lhs, |
(5) | (C++11 起) (C++14 前) |
template< class... TTypes, class... UTypes > constexpr bool operator>( const tuple<TTypes...>& lhs, |
(5) | (C++14 起) |
template< class... TTypes, class... UTypes > bool operator>=( const tuple<TTypes...>& lhs, |
(6) | (C++11 起) (C++14 前) |
template< class... TTypes, class... UTypes > constexpr bool operator>=( const tuple<TTypes...>& lhs, |
(6) | (C++14 起) |
1-2) 比较 tuple lhs
的每个元素和 tuple rhs
的对应元素。
3-6) 以字典序比较 lhs
与 rhs
,即比较首元素,若相等则比较第二元素,若均相等则比较第三元素,以此类推。
所有比较运算符是短路的;它们在确定结果所必须的比较之外不访问 tuple 元素。
参数
lhs, rhs | - | 要比较的 tuple |
返回值
1) 若对于所有 [0, sizeof...(Types))
中的 i 有 std::get<i>(lhs) == std::get<i>(rhs) 则为 true ,否则为 false 。对二个空 tuple 返回 true 。
2) !(lhs == rhs)
3) (bool)(std::get<0>(lhs) < std::get<0>(rhs)) || (!(bool)(std::get<0>(rhs) < std::get<0>(lhs)) && lhstail < rhstail) ,其中 lhstail
是无首元素的 lhs ,而 rhstail
是无首元素的 rhs 。对于二个空 tuple ,返回 false 。
4) !(rhs < lhs)
5) rhs < lhs
6) !(lhs < rhs)
示例
因为 operator< 对 tuples 定义,故能排序 tuple 的容器。
#include <iostream> #include <tuple> #include <vector> #include <algorithm> int main() { std::vector<std::tuple<int, std::string, float>> v; v.emplace_back(2, "baz", -0.1); v.emplace_back(2, "bar", 3.14); v.emplace_back(1, "foo", 100.1); std::sort(v.begin(), v.end()); for(auto p: v) { std::cout << "(" << std::get<0>(p) << ", " << std::get<1>(p) << ", " << std::get<2>(p) << ")\n"; } }
输出:
(1, foo, 100.1) (2, bar, 3.14) (2, baz, -0.1)