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 >

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

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

bool operator== ( const std::sub_match<BidirIt>& lhs,
                  const std::basic_string</*value-type-of*/<BidirIt>,

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

bool operator!= ( const std::sub_match<BidirIt>& lhs,
                  const std::basic_string</*value-type-of*/<BidirIt>,

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

bool operator<  ( const std::sub_match<BidirIt>& lhs,
                  const std::basic_string</*value-type-of*/<BidirIt>,

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

bool operator<= ( const std::sub_match<BidirIt>& lhs,
                  const std::basic_string</*value-type-of*/<BidirIt>,

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

bool operator>  ( const std::sub_match<BidirIt>& lhs,
                  const std::basic_string</*value-type-of*/<BidirIt>,

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

bool operator>= ( const std::sub_match<BidirIt>& lhs,
                  const std::basic_string</*value-type-of*/<BidirIt>,

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

auto operator<=>( const std::sub_match<BidirIt>& lhs,
                  const std::basic_string</*value-type-of*/<BidirIt>,

                                          Traits, Alloc>& str );
(14)(C++20 起)
template< class BidirIt, class Traits, class Alloc >

bool operator== ( const std::basic_string</*value-type-of*/<BidirIt>,
                                          Traits, Alloc>& str,

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

bool operator!= ( const std::basic_string</*value-type-of*/<BidirIt>,
                                          Traits, Alloc>& str,

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

bool operator<  ( const std::basic_string</*value-type-of*/<BidirIt>,
                                          Traits, Alloc>& str,

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

bool operator<= ( const std::basic_string</*value-type-of*/<BidirIt>,
                                          Traits, Alloc>& str,

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

bool operator>  ( const std::basic_string</*value-type-of*/<BidirIt>,
                                          Traits, Alloc>& str,

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

bool operator>= ( const std::basic_string</*value-type-of*/<BidirIt>,
                                          Traits, Alloc>& str,

                  const std::sub_match<BidirIt>& rhs );
(20)(C++11 起)
(C++20 前)
与 C 风格字符串进行比较
template< class BidirIt >

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

                  const /*value-type-of*/<BidirIt>* s );
(21)(C++11 起)
template< class BidirIt >

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

                  const /*value-type-of*/<BidirIt>* s );
(22)(C++11 起)
(C++20 前)
template< class BidirIt >

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

                  const /*value-type-of*/<BidirIt>* s );
(23)(C++11 起)
(C++20 前)
template< class BidirIt >

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

                  const /*value-type-of*/<BidirIt>* s );
(24)(C++11 起)
(C++20 前)
template< class BidirIt >

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

                  const /*value-type-of*/<BidirIt>* s );
(25)(C++11 起)
(C++20 前)
template< class BidirIt >

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

                  const /*value-type-of*/<BidirIt>* s );
(26)(C++11 起)
(C++20 前)
template< class BidirIt >

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

                  const /*value-type-of*/<BidirIt>* s );
(27)(C++20 起)
template< class BidirIt >

bool operator== ( const /*value-type-of*/<BidirIt>* s,

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

bool operator!= ( const /*value-type-of*/<BidirIt>* s,

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

bool operator<  ( const /*value-type-of*/<BidirIt>* s,

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

bool operator<= ( const /*value-type-of*/<BidirIt>* s,

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

bool operator>  ( const /*value-type-of*/<BidirIt>* s,

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

bool operator>= ( const /*value-type-of*/<BidirIt>* s,

                  const std::sub_match<BidirIt>& rhs );
(33)(C++11 起)
(C++20 前)
与单个字符进行比较
template< class BidirIt >

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

                  const /*value-type-of*/<BidirIt>& ch );
(34)(C++11 起)
template< class BidirIt >

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

                  const /*value-type-of*/<BidirIt>& ch );
(35)(C++11 起)
(C++20 前)
template< class BidirIt >

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

                  const /*value-type-of*/<BidirIt>& ch );
(36)(C++11 起)
(C++20 前)
template< class BidirIt >

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

                  const /*value-type-of*/<BidirIt>& ch );
(37)(C++11 起)
(C++20 前)
template< class BidirIt >

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

                  const /*value-type-of*/<BidirIt>& ch );
(38)(C++11 起)
(C++20 前)
template< class BidirIt >

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

                  const /*value-type-of*/<BidirIt>& ch );
(39)(C++11 起)
(C++20 前)
template< class BidirIt >

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

                  const /*value-type-of*/<BidirIt>& ch );
(40)(C++20 起)
template< class BidirIt >

bool operator== ( const /*value-type-of*/<BidirIt>& ch,

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

bool operator!= ( const /*value-type-of*/<BidirIt>& ch,

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

bool operator<  ( const /*value-type-of*/<BidirIt>& ch,

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

bool operator<= ( const /*value-type-of*/<BidirIt>& ch,

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

bool operator>  ( const /*value-type-of*/<BidirIt>& ch,

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

bool operator>= ( const /*value-type-of*/<BidirIt>& ch,

                  const std::sub_match<BidirIt>& rhs );
(46)(C++11 起)
(C++20 前)
辅助类型别名
template< class BidirIt >

using /*value-type-of*/ =

    typename std::iterator_traits<BidirIt>::value_type;
(47)(仅用于阐述*)
template< class BidirIt >

using /*cat-type-of*/ =
    std::compare_three_way_result_t

        <std::basic_string</*value-type-of*/<BidirIt>>>;
(48)(C++20 起)
(仅用于阐述*)

sub_match 与另一 sub_matchstd::string、C 风格字符串或单个字符进行比较。

1-7) 直接比较两个 sub_match
8-20) 比较 sub_matchstd::basic_string
21-33) 比较 sub_match 与 C 风格字符串。
34-46) 比较 sub_match 与单个字符。

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

(C++20 起)
47)value-type-of <BidirIt>BidirIt值类型
48)cat-type-of <BidirIt>std::sub_match<BidirIt> 的三路比较结果类型。

参数

lhs, rhs, sm-要比较的 sub_match
str-要比较的 std::basic_string
s-指向要比较的 C 风格字符串的指针
ch-要比较的字符

返回值

target 为以下值:

1-7)rhs
8-20)typename std::sub_match<BidirIt>::string_type(str.data(), str.size())
21-33)s
34-46)typename std::sub_match<BidirIt>::string_type(1, ch)

返回值定义如下

  运算符  返回值
重载 (1-14,21-27,34-40)
(带有形参 lhs 的重载)
           重载 (15-20,28-33,41-46)           
(不带形参 lhs 的重载)
==lhs.compare(target) == 0rhs.compare(target) == 0
!=lhs.compare(target) != 0rhs.compare(target) != 0
<lhs.compare(target) < 0rhs.compare(target) > 0
<=lhs.compare(target) <= 0rhs.compare(target) >= 0
>lhs.compare(target) > 0rhs.compare(target) < 0
>=lhs.compare(target) >= 0rhs.compare(target) <= 0
<=> static_cast<cat-type-of <BidirIt>>
    (lhs.compare(target) <=> 0)
 
不适用

注解

operator<=> 的返回类型保证是比较类别类型。如果 value-type-of <BidirIt>charwchar_tchar8_tchar16_tchar32_t,那么 operator<=> 的返回类型是 std::strong_ordering

示例

缺陷报告

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

缺陷报告应用于出版时的行为正确行为
LWG 2217C++11对于与 std::string 进行的比较,
compare() 的实参是 str.c_str()
实参是
string_type(str.data(), str.size()))

参阅

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