operator==,!=,<,<=,>,>=,<=>(std::sub_match)

来自cppreference.com
< cpp‎ | regex‎ | sub match
在标头 <regex> 定义
直接比较
template< class BidirIt >

bool operator==( const std::sub_match<BidirIt>& lhs,

                 const std::sub_match<BidirIt>& rhs );
(1) (C++11 起)
template< class BidirIt >

bool operator!=( const std::sub_match<BidirIt>& lhs,

                 const std::sub_match<BidirIt>& rhs );
(2) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator<( const std::sub_match<BidirIt>& lhs,

                const std::sub_match<BidirIt>& rhs );
(3) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator<=( const std::sub_match<BidirIt>& lhs,

                 const std::sub_match<BidirIt>& rhs );
(4) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator>( const std::sub_match<BidirIt>& lhs,

                const std::sub_match<BidirIt>& rhs );
(5) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator>=( const std::sub_match<BidirIt>& lhs,

                 const std::sub_match<BidirIt>& rhs );
(6) (C++11 起)
(C++20 前)
template< class BidirIt >

/*comp-cat*/ operator<=>( const std::sub_match<BidirIt>& lhs,

                          const std::sub_match<BidirIt>& rhs );
(7) (C++20 起)
std::sub_matchstd::basic_string
template< class BidirIt, class Traits, class Alloc >

bool operator==( const std::sub_match<BidirIt>& sm,
                 const std::basic_string<
                     typename std::iterator_traits<BidirIt>::value_type,

                     Traits,Alloc>& rhs );
(8) (C++11 起)
template< class BidirIt, class Traits, class Alloc >

bool operator!=( const std::sub_match<BidirIt>& sm,
                 const std::basic_string<
                     typename std::iterator_traits<BidirIt>::value_type,

                     Traits,Alloc>& st );
(9) (C++11 起)
(C++20 前)
template< class BidirIt, class Traits, class Alloc >

bool operator<( const std::sub_match<BidirIt>& sm,
                const std::basic_string<
                    typename std::iterator_traits<BidirIt>::value_type,

                    Traits,Alloc>& st );
(10) (C++11 起)
(C++20 前)
template< class BidirIt, class Traits, class Alloc >

bool operator<=( const std::sub_match<BidirIt>& sm,
                 const std::basic_string<
                     typename std::iterator_traits<BidirIt>::value_type,

                     Traits,Alloc>& st );
(11) (C++11 起)
(C++20 前)
template< class BidirIt, class Traits, class Alloc >

bool operator>( const std::sub_match<BidirIt>& sm,
                const std::basic_string<
                    typename std::iterator_traits<BidirIt>::value_type,

                    Traits,Alloc>& st );
(12) (C++11 起)
(C++20 前)
template< class BidirIt, class Traits, class Alloc >

bool operator>=( const std::sub_match<BidirIt>& sm,
                 const std::basic_string<
                     typename std::iterator_traits<BidirIt>::value_type,

                     Traits,Alloc>& st );
(13) (C++11 起)
(C++20 前)
template< class BidirIt, class Traits, class Alloc >

/*comp-cat*/ operator<=>( const std::sub_match<BidirIt>& sm,
                          const std::basic_string<
                              typename std::iterator_traits<BidirIt>::value_type,

                              Traits,Alloc>& st );
(14) (C++20 起)
std::basic_stringstd::sub_match
template< class BidirIt, class Traits, class Alloc >

bool operator==( const std::basic_string<
                     typename std::iterator_traits<BidirIt>::value_type,
                     Traits,Alloc>& st,

                 const std::sub_match<BidirIt>& sm );
(15) (C++11 起)
(C++20 前)
template< class BidirIt, class Traits, class Alloc >

bool operator!=( const std::basic_string<
                     typename std::iterator_traits<BidirIt>::value_type,
                     Traits,Alloc>& st,

                 const std::sub_match<BidirIt>& sm );
(16) (C++11 起)
(C++20 前)
template< class BidirIt, class Traits, class Alloc >

bool operator<( const std::basic_string<
                    typename std::iterator_traits<BidirIt>::value_type,
                    Traits,Alloc>& st,

                const std::sub_match<BidirIt>& sm );
(17) (C++11 起)
(C++20 前)
template< class BidirIt, class Traits, class Alloc >

bool operator<=( const std::basic_string<
                    typename std::iterator_traits<BidirIt>::value_type,
                    Traits,Alloc>& st,

                const std::sub_match<BidirIt>& sm );
(18) (C++11 起)
(C++20 前)
template< class BidirIt, class Traits, class Alloc >

bool operator>( const std::basic_string<
                    typename std::iterator_traits<BidirIt>::value_type,
                    Traits,Alloc>& st,

                const std::sub_match<BidirIt>& sm );
(19) (C++11 起)
(C++20 前)
template< class BidirIt, class Traits, class Alloc >

bool operator>=( const std::basic_string<
                     typename std::iterator_traits<BidirIt>::value_type,
                     Traits,Alloc>& st,

                 const std::sub_match<BidirIt>& sm );
(20) (C++11 起)
(C++20 前)
std::sub_matchstd::iterator_traits<BidirIt>::value_type*
template< class BidirIt >

bool operator==( const std::sub_match<BidirIt>& sm,

                 const typename std::iterator_traits<BidirIt>::value_type* s );
(21) (C++11 起)
template< class BidirIt >

bool operator!=( const std::sub_match<BidirIt>& sm,

                 const typename std::iterator_traits<BidirIt>::value_type* s );
(22) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator<( const std::sub_match<BidirIt>& sm,

                const typename std::iterator_traits<BidirIt>::value_type* s );
(23) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator<=( const std::sub_match<BidirIt>& sm,

                 const typename std::iterator_traits<BidirIt>::value_type* s );
(24) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator>( const std::sub_match<BidirIt>& sm,

                const typename std::iterator_traits<BidirIt>::value_type* s );
(25) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator>=( const std::sub_match<BidirIt>& sm,

                 const typename std::iterator_traits<BidirIt>::value_type* s );
(26) (C++11 起)
(C++20 前)
template< class BidirIt >

/*comp-cat*/ operator<=>( const std::sub_match<BidirIt>& sm,

                          const typename std::iterator_traits<BidirIt>::value_type* s );
(27) (C++20 起)
std::iterator_traits<BidirIt>::value_type*std::sub_match
template< class BidirIt >

bool operator==( const typename std::iterator_traits<BidirIt>::value_type* s,

                 const std::sub_match<BidirIt>& sm );
(28) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator!=( const typename std::iterator_traits<BidirIt>::value_type* s,

                 const std::sub_match<BidirIt>& sm );
(29) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator<( const typename std::iterator_traits<BidirIt>::value_type* s,

                const std::sub_match<BidirIt>& sm );
(30) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator<=( const typename std::iterator_traits<BidirIt>::value_type* s,

                 const std::sub_match<BidirIt>& sm );
(31) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator>( const typename std::iterator_traits<BidirIt>::value_type* s,

                const std::sub_match<BidirIt>& sm );
(32) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator>=( const typename std::iterator_traits<BidirIt>::value_type* s,

                 const std::sub_match<BidirIt>& sm );
(33) (C++11 起)
(C++20 前)
std::sub_matchstd::iterator_traits<BidirIt>::value_type
template< class BidirIt >

bool operator==( const std::sub_match<BidirIt>& sm,

                 const typename std::iterator_traits<BidirIt>::value_type& ch );
(34) (C++11 起)
template< class BidirIt >

bool operator!=( const std::sub_match<BidirIt>& sm,

                 const typename std::iterator_traits<BidirIt>::value_type& ch );
(35) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator<( const std::sub_match<BidirIt>& sm,

                const typename std::iterator_traits<BidirIt>::value_type& ch );
(36) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator<=( const std::sub_match<BidirIt>& sm,

                 const typename std::iterator_traits<BidirIt>::value_type& ch );
(37) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator>( const std::sub_match<BidirIt>& sm,

                const typename std::iterator_traits<BidirIt>::value_type& ch );
(38) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator>=( const std::sub_match<BidirIt>& sm,

                 const typename std::iterator_traits<BidirIt>::value_type& ch );
(39) (C++11 起)
(C++20 前)
template< class BidirIt >

/*comp-cat*/ operator<=>( const std::sub_match<BidirIt>& sm,

                          const typename std::iterator_traits<BidirIt>::value_type& ch );
(40) (C++20 起)
std::iterator_traits<BidirIt>::value_typestd::sub_match
template< class BidirIt >

bool operator==( const typename std::iterator_traits<BidirIt>::value_type& ch,

                 const std::sub_match<BidirIt>& sm );
(41) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator!=( const typename std::iterator_traits<BidirIt>::value_type& ch,

                 const std::sub_match<BidirIt>& sm );
(42) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator<( const typename std::iterator_traits<BidirIt>::value_type& ch,

                const std::sub_match<BidirIt>& sm );
(43) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator<=( const typename std::iterator_traits<BidirIt>::value_type& ch,

                 const std::sub_match<BidirIt>& sm );
(44) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator>( const typename std::iterator_traits<BidirIt>::value_type& ch,

                const std::sub_match<BidirIt>& sm );
(45) (C++11 起)
(C++20 前)
template< class BidirIt >

bool operator>=( const typename std::iterator_traits<BidirIt>::value_type& ch,

                 const std::sub_match<BidirIt>& sm );
(46) (C++11 起)
(C++20 前)

比较 sub_match 与另一 sub_match 、 string 、空终止字符序列或字符。

1-7) 通过直接比较其底层序列比较二个 sub_match 。如同以 lhs.compare(rhs) 实现。
8-20) 比较 sub_matchstd::basic_string 。如同以 sm.compare(typename sub_match<BidirIt>::string_type(st.data(), st.size()) 实现。
21-33) 比较 sub_match 与空终止字符串。如同以 sm.compare(s) 实现。
34-46) 比较 sub_match 与字符。如同以 sm.compare(typename sub_match<BidirIt>::string_type(1, ch)) 实现。

三路比较运算符的结果类型( /*comp-cat*/ )是 std::compare_three_way_result_t<typename std::sub_match<BidirIt>::string_type>> ,即 std::char_traits<typename std::iterator_traits<BidirIt>::value_type>::comparison_category ,若该有限定标识合法并指代类型,否则为 std::weak_ordering 。若 /*comp-cat*/ 不是比较类别类型,则程序为非良构。

<<=>>=!= 运算符分别从 operator<=>operator== 合成

(C++20 起)

参数

lhs, rhs, sm - 要比较的 sub_match
st - 要比较的 basic_string
s - 指向要比较空终止字符串的指针
ch - 要比较的字符

返回值

对于 operator== (C++20 起)若以 std::sub_match::compare() 定义的对应关系成立则为 true ,否则为 false

对于 operator<=>static_cast</*comp-cat*/>(/*comp-res*/ <=> 0) ,其中 /*comp-res*/ 是上述 std::sub_match::compare() 的结果。

(C++20 起)

注解

BidirIt 的值类型为 charwchar_tchar8_tchar16_tchar32_t ,则 operator<=> 的返回类型为 std::strong_ordering

(C++20 起)

示例

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 出版时的行为 正确行为
LWG 3432 C++20 未要求 operator<=> 的返回类型为比较类别类型 已要求

参阅

若存在则比较匹配的子序列
(公开成员函数)