上传cppreference

This commit is contained in:
2025-08-01 12:57:54 +08:00
parent e29892f8cd
commit 196e706fe4
5485 changed files with 982007 additions and 3 deletions

View File

@@ -0,0 +1,329 @@
<!DOCTYPE html>
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>&#40664;&#35748;&#27604;&#36739;(C++20 &#36215;)</title>
<link rel="stylesheet" href="ext.css" />
<link rel="stylesheet" href="site_modules.css" />
</head>
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-cpp_language_default_comparisons skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">&#40664;&#35748;&#27604;&#36739;<span class="t-mark-rev t-since-cxx20">(C++20 &#36215;)</span></h1>
<div id="bodyContent">
<div id="contentSub"><span class="subpages">&lt; <a href="cpp.html">cpp</a>&lrm; | <a href="cpp-language.html">language</a></span></div>
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
<p>&#25552;&#20379;&#19968;&#31181;&#26041;&#24335;&#65292;&#20197;&#35201;&#27714;&#32534;&#35793;&#22120;&#20026;&#26576;&#20010;&#31867;&#29983;&#25104;&#30456;&#19968;&#33268;&#30340;&#27604;&#36739;&#36816;&#31639;&#31526;&#12290;</p>
<h3><span class="mw-headline" id=".E8.AF.AD.E6.B3.95">&#35821;&#27861;</span></h3>
<table class="t-sdsc-begin">
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><span class="t-spar">&#36820;&#22238;&#31867;&#22411;</span> <span class="t-spar">&#31867;&#21517;</span><code><b>::operator</b></code><span class="t-spar">&#36816;&#31639;&#31526;</span><code><b>(</b></code> <code><b>const</b></code> <span class="t-spar">&#31867;&#21517;</span> <code><b>&amp;</b></code> <code><b>) const</b></code> <code><b>&amp;</b></code><span class="t-mark">(&#21487;&#36873;)</span> <code><b>= default;</b></code></td>
<td>(1)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>friend</b></code> <span class="t-spar">&#36820;&#22238;&#31867;&#22411;</span> <code><b>operator</b></code><span class="t-spar">&#36816;&#31639;&#31526;</span><code><b>(</b></code> <code><b>const</b></code> <span class="t-spar">&#31867;&#21517;</span> <code><b>&amp;</b></code><code><b>,</b></code> <code><b>const</b></code> <span class="t-spar">&#31867;&#21517;</span> <code><b>&amp;</b></code> <code><b>) = default;</b></code></td>
<td>(2)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>friend</b></code> <span class="t-spar">&#36820;&#22238;&#31867;&#22411;</span> <code><b>operator</b></code><span class="t-spar">&#36816;&#31639;&#31526;</span><code><b>(</b></code> <span class="t-spar">&#31867;&#21517;</span><code><b>,</b></code> <span class="t-spar">&#31867;&#21517;</span> <code><b>) = default;</b></code></td>
<td>(3)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<table class="t-par-begin">
<tr class="t-par">
<td><span class="t-spar">&#36816;&#31639;&#31526;</span></td>
<td>-</td>
<td>&#27604;&#36739;&#36816;&#31639;&#31526;&#65288;<code>&lt;=&gt;</code>&#65292;<code>==</code>&#65292;<code>!=</code>&#65292;<code>&lt;</code>&#65292;<code>&gt;</code>&#65292;<code>&lt;=</code>&#65292;&#25110; <code>&gt;=</code>&#65289;</td>
</tr>
<tr class="t-par">
<td><span class="t-spar">&#36820;&#22238;&#31867;&#22411;</span></td>
<td>-</td>
<td>&#36816;&#31639;&#31526;&#20989;&#25968;&#30340;&#36820;&#22238;&#31867;&#22411;
<ul>
<li>&#22914;&#26524;<span class="t-spar">&#36816;&#31639;&#31526;</span>&#26159; <code><b>&lt;=&gt;</b></code>&#65292;&#24517;&#39035;&#26159; <a href="cpp-language-auto.html"><code>auto</code></a> &#25110;<a href="cpp-language-default_comparisons.html#.E8.87.AA.E5.AE.9A.E4.B9.89.E7.9A.84.E6.AF.94.E8.BE.83.E5.92.8C.E6.AF.94.E8.BE.83.E7.B1.BB.E5.88.AB">&#19977;&#31181;&#27604;&#36739;&#31867;&#21035;</a>&#20043;&#19968;&#65292;</li>
<li>&#20854;&#20182;&#24773;&#20917;&#19979;&#65292;&#24517;&#39035;&#26159; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span></span></span></li>
</ul>
</td>
</tr>
</table>
<h3><span class="mw-headline" id=".E8.A7.A3.E9.87.8A">&#35299;&#37322;</span></h3>
<div class="t-li1"><span class="t-li">1)</span> &#23558;&#40664;&#35748;&#27604;&#36739;&#20989;&#25968;&#22768;&#26126;&#20026;&#25104;&#21592;&#20989;&#25968;&#12290;</div>
<div class="t-li1"><span class="t-li">2)</span> &#23558;&#40664;&#35748;&#27604;&#36739;&#20989;&#25968;&#22768;&#26126;&#20026;&#38750;&#25104;&#21592;&#20989;&#25968;&#12290;</div>
<div class="t-li1"><span class="t-li">3)</span> &#23558;&#40664;&#35748;&#27604;&#36739;&#20989;&#25968;&#22768;&#26126;&#20026;&#38750;&#25104;&#21592;&#20989;&#25968;&#12290;&#21442;&#25968;&#25353;&#20540;&#20256;&#36882;&#12290;</div>
<p>&#27599;&#24403;&#26377;&#20540;&#36890;&#36807; <code>&lt;</code>&#65292;<code>&gt;</code>&#65292;<code>&lt;=</code>&#65292;<code>&gt;=</code>&#65292;&#25110; <code>&lt;=&gt;</code> &#34987;&#27604;&#36739;&#19988;&#37325;&#36733;&#20915;&#35758;&#36873;&#25321;&#35813;&#37325;&#36733;&#26102;&#65292;&#19977;&#36335;&#27604;&#36739;&#20989;&#25968;&#65288;&#19981;&#31649;&#26159;&#21542;&#20026;&#40664;&#35748;&#65289;&#20250;&#34987;&#35843;&#29992;&#12290;</p>
<p>&#27599;&#24403;&#26377;&#20540;&#36890;&#36807; <code>==</code> &#25110; <code>!=</code> &#34987;&#27604;&#36739;&#19988;&#37325;&#36733;&#20915;&#35758;&#36873;&#25321;&#35813;&#37325;&#36733;&#26102;&#65292;&#30456;&#31561;&#27604;&#36739;&#20989;&#25968;&#65288;&#19981;&#31649;&#26159;&#21542;&#20026;&#40664;&#35748;&#65289;&#20250;&#34987;&#35843;&#29992;&#12290;</p>
<p>&#19982;&#40664;&#35748;&#30340;&#29305;&#27530;&#25104;&#21592;&#20989;&#25968;&#31867;&#20284;&#65292;&#40664;&#35748;&#30340;&#27604;&#36739;&#20989;&#25968;&#22312;<a href="cpp-language-definition.html#ODR-use">&#34987; ODR &#20351;&#29992;</a>&#25110;<a href="cpp-language-constant_expression.html#Functions_and_variables_needed_for_constant_evaluation">&#34987;&#24120;&#37327;&#27714;&#20540;&#25152;&#38656;</a>&#26102;&#34987;&#23450;&#20041;&#12290;</p>
<h3><span class="mw-headline" id=".E9.BB.98.E8.AE.A4.E6.AF.94.E8.BE.83">&#40664;&#35748;&#27604;&#36739;</span></h3>
<h4><span class="mw-headline" id=".E9.BB.98.E8.AE.A4.E4.B8.89.E8.B7.AF.E6.AF.94.E8.BE.83">&#40664;&#35748;&#19977;&#36335;&#27604;&#36739;</span></h4>
<p>&#40664;&#35748;&#30340; <code>operator&lt;=&gt;</code> &#36890;&#36807;&#20381;&#27425;&#20197;&#35745;&#31639; <code>&lt;=&gt;</code> &#27604;&#36739;&#22522;&#31867;&#65288;&#20174;&#24038;&#21040;&#21491;&#65292;&#28145;&#24230;&#20248;&#20808;&#65289;&#65292;&#28982;&#21518;&#26159;&#38750;&#38745;&#24577;&#25104;&#21592;&#65288;&#25353;&#22768;&#26126;&#39034;&#24207;&#65289;&#23376;&#23545;&#35937;&#65292;&#36882;&#24402;&#22320;&#23637;&#24320;&#25968;&#32452;&#25104;&#21592;&#65288;&#25353;&#19979;&#26631;&#36882;&#22686;&#65289;&#65292;&#24182;&#22312;&#21457;&#29616;&#19981;&#30456;&#31561;&#30340;&#32467;&#26524;&#26102;&#25552;&#21069;&#20572;&#27490;&#30340;&#26041;&#24335;&#25191;&#34892;&#23383;&#20856;&#24207;&#27604;&#36739;&#65292;&#21363;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">for</span> <span class="coMULTI">/* T &#30340;&#27599;&#20010;&#22522;&#31867;&#25110;&#23376;&#23545;&#35937; o */</span>
<span class="kw1">if</span> <span class="br0">(</span><span class="kw4">auto</span> cmp <span class="sy1">=</span> <span class="kw1">static_cast</span><span class="sy1">&lt;</span>R<span class="sy1">&gt;</span><span class="br0">(</span>compare<span class="br0">(</span>lhs.<span class="me1">o</span>, rhs.<span class="me1">o</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span> cmp <span class="sy3">!</span><span class="sy1">=</span> <span class="nu0">0</span><span class="br0">)</span> <span class="kw1">return</span> cmp<span class="sy4">;</span>
<span class="kw1">return</span> <span class="kw1">static_cast</span><span class="sy1">&lt;</span>R<span class="sy1">&gt;</span><span class="br0">(</span>strong_ordering<span class="sy4">::</span><span class="me2">equal</span><span class="br0">)</span><span class="sy4">;</span></pre></div>
</div>
<p>&#34394;&#22522;&#23376;&#23545;&#35937;&#26159;&#21542;&#20250;&#22810;&#27425;&#34987;&#27604;&#36739;&#26410;&#34987;&#25351;&#26126;&#12290;</p>
<p>&#22914;&#26524;&#34987;&#22768;&#26126;&#30340;&#36820;&#22238;&#31867;&#22411;&#26159; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">auto</span></span></span>&#65292;&#23454;&#38469;&#30340;&#36820;&#22238;&#31867;&#22411;&#26159;&#35201;&#34987;&#27604;&#36739;&#30340;&#22522;&#31867;&#65292;&#25104;&#21592;&#23376;&#23545;&#35937;&#21644;&#25104;&#21592;&#25968;&#32452;&#20803;&#32032;&#30340;&#20844;&#20849;&#27604;&#36739;&#31867;&#21035;&#65288;&#35265; <a href="cpp-utility-compare-common_comparison_category.html"><tt>std::common_comparison_category</tt></a>&#65289;&#12290;&#36825;&#26679;&#22312;&#32534;&#20889;&#36820;&#22238;&#31867;&#22411;&#38750;&#24179;&#20961;&#22320;&#20381;&#36182;&#20110;&#25104;&#21592;&#30340;&#22330;&#21512;&#26102;&#20250;&#26356;&#23481;&#26131;&#65292;&#20363;&#22914;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">template</span><span class="sy1">&lt;</span><span class="kw1">class</span> T1, <span class="kw1">class</span> T2<span class="sy1">&gt;</span>
<span class="kw1">struct</span> P <span class="br0">{</span>
T1 x1<span class="sy4">;</span>
T2 x2<span class="sy4">;</span>
<span class="kw1">friend</span> <span class="kw4">auto</span> operator<span class="sy1">&lt;=&gt;</span><span class="br0">(</span><span class="kw4">const</span> P<span class="sy3">&amp;</span>, <span class="kw4">const</span> P<span class="sy3">&amp;</span><span class="br0">)</span> <span class="sy1">=</span> <span class="kw1">default</span><span class="sy4">;</span>
<span class="br0">}</span><span class="sy4">;</span></pre></div>
</div>
<p>&#23558;&#36820;&#22238;&#31867;&#22411;&#35774;&#20026; <span class="t-c"><span class="mw-geshi cpp source-cpp">R</span></span> &#65292;&#27599;&#19968;&#23545;&#23376;&#23545;&#35937; <span class="t-c"><span class="mw-geshi cpp source-cpp">a</span></span>, <span class="t-c"><span class="mw-geshi cpp source-cpp">b</span></span> &#25353;&#22914;&#19979;&#26041;&#27861;&#36827;&#34892;&#27604;&#36739;&#65306;</p>
<ul>
<li>&#22914;&#26524; <span class="t-c"><span class="mw-geshi cpp source-cpp">a <span class="sy1">&lt;=&gt;</span> b</span></span> &#21487;&#29992;&#65292;&#27604;&#36739;&#32467;&#26524;&#20026; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw1">static_cast</span><span class="sy1">&lt;</span>R<span class="sy1">&gt;</span><span class="br0">(</span>a <span class="sy1">&lt;=&gt;</span> b<span class="br0">)</span></span></span>&#12290;</li>
<li>&#21542;&#21017;&#65292;&#22914;&#26524; <span class="t-c"><span class="mw-geshi cpp source-cpp">operator<span class="sy1">&lt;=&gt;</span></span></span> &#30340;&#37325;&#36733;&#20915;&#35758;&#20026; <span class="t-c"><span class="mw-geshi cpp source-cpp">a <span class="sy1">&lt;=&gt;</span> b</span></span> &#25191;&#34892;&#19988;&#33267;&#23569;&#25214;&#21040;&#19968;&#20010;&#20505;&#36873;&#65292;&#27604;&#36739;&#26410;&#23450;&#20041;&#65288;<code>operator&lt;=&gt;</code> &#34987;&#23450;&#20041;&#20026;&#24323;&#32622;&#30340;&#65289;&#12290;</li>
<li>&#21542;&#21017;&#65292;&#22914;&#26524; <span class="t-c"><span class="mw-geshi cpp source-cpp">R</span></span> &#19981;&#26159;&#19968;&#20010;&#27604;&#36739;&#31867;&#21035;&#65288;&#35265;&#19979;&#25991;&#65289;&#25110; <span class="t-c"><span class="mw-geshi cpp source-cpp">a <span class="sy1">==</span> b</span></span> &#19982; <span class="t-c"><span class="mw-geshi cpp source-cpp">a <span class="sy1">&lt;</span> b</span></span> &#26377;&#20854;&#19968;&#19981;&#21487;&#29992;&#65292;&#27604;&#36739;&#26410;&#23450;&#20041;&#65288;<code>operator&lt;=&gt;</code> &#34987;&#23450;&#20041;&#20026;&#24323;&#32622;&#30340;&#65289;&#12290;</li>
<li>&#21542;&#21017;&#65292;&#22914;&#26524; <span class="t-c"><span class="mw-geshi cpp source-cpp">R</span></span> &#26159; <span class="t-c"><span class="mw-geshi cpp source-cpp">std<span class="sy4">::</span><span class="me2">strong_ordering</span></span></span>&#65292;&#32467;&#26524;&#26159;</li>
</ul>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1">a <span class="sy1">==</span> b <span class="sy4">?</span> R<span class="sy4">::</span><span class="me2">equal</span> <span class="sy4">:</span>
a <span class="sy1">&lt;</span> b <span class="sy4">?</span> R<span class="sy4">::</span><span class="me2">less</span> <span class="sy4">:</span>
R<span class="sy4">::</span><span class="me2">greater</span></pre></div>
</div>
<ul>
<li>&#21542;&#21017;&#65292;&#22914;&#26524; <span class="t-c"><span class="mw-geshi cpp source-cpp">R</span></span> &#26159; <span class="t-c"><span class="mw-geshi cpp source-cpp">std<span class="sy4">::</span><span class="me2">weak_ordering</span></span></span>&#65292;&#32467;&#26524;&#26159;</li>
</ul>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1">a <span class="sy1">==</span> b <span class="sy4">?</span> R<span class="sy4">::</span><span class="me2">equivalent</span> <span class="sy4">:</span>
a <span class="sy1">&lt;</span> b <span class="sy4">?</span> R<span class="sy4">::</span><span class="me2">less</span> <span class="sy4">:</span>
R<span class="sy4">::</span><span class="me2">greater</span></pre></div>
</div>
<ul>
<li>&#21542;&#21017;&#65288;<span class="t-c"><span class="mw-geshi cpp source-cpp">R</span></span> &#26159; <span class="t-c"><span class="mw-geshi cpp source-cpp">std<span class="sy4">::</span><span class="me2">partial_ordering</span></span></span>&#65289;&#65292;&#32467;&#26524;&#26159;</li>
</ul>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1">a <span class="sy1">==</span> b <span class="sy4">?</span> R<span class="sy4">::</span><span class="me2">equal</span> <span class="sy4">:</span>
a <span class="sy1">&lt;</span> b <span class="sy4">?</span> R<span class="sy4">::</span><span class="me2">less</span> <span class="sy4">:</span>
b <span class="sy1">&lt;</span> a <span class="sy4">?</span> R<span class="sy4">::</span><span class="me2">greater</span> <span class="sy4">:</span>
R<span class="sy4">::</span><span class="me2">unordered</span></pre></div>
</div>
<p>&#19982;&#20219;&#20309; <span class="t-c"><span class="mw-geshi cpp source-cpp">operator<span class="sy1">&lt;=&gt;</span></span></span> &#37325;&#36733;&#30340;&#35268;&#21017;&#19968;&#26679;&#65292;&#40664;&#35748;&#30340; <code>&lt;=&gt;</code> &#37325;&#36733;&#20063;&#20801;&#35768;&#31867;&#22411;&#34987; <code>&lt;</code>&#65292;<code>&gt;</code>&#65292;<code>&lt;=</code>&#65292;&#21644; <code>&gt;=</code> &#27604;&#36739;&#12290;</p>
<p><br />
&#22914;&#26524; <span class="t-c"><span class="mw-geshi cpp source-cpp">operator<span class="sy1">&lt;=&gt;</span></span></span> &#26159;&#40664;&#35748;&#29256;&#26412;&#19988; <span class="t-c"><span class="mw-geshi cpp source-cpp">operator<span class="sy1">==</span></span></span> &#23436;&#20840;&#27809;&#26377;&#34987;&#22768;&#26126;&#65292;&#37027;&#20040; <span class="t-c"><span class="mw-geshi cpp source-cpp">operator<span class="sy1">==</span></span></span> &#23558;&#38544;&#24335;&#22320;&#37319;&#29992;&#40664;&#35748;&#29256;&#26412;&#12290;</p>
<div class="t-example">
<div class="t-example-live-link"></div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co2">#include &lt;compare&gt;</span>
<span class="kw1">struct</span> Point <span class="br0">{</span>
<span class="kw4">int</span> x<span class="sy4">;</span>
<span class="kw4">int</span> y<span class="sy4">;</span>
<span class="kw4">auto</span> operator<span class="sy1">&lt;=&gt;</span><span class="br0">(</span><span class="kw4">const</span> Point<span class="sy3">&amp;</span><span class="br0">)</span> <span class="kw4">const</span> <span class="sy1">=</span> <span class="kw1">default</span><span class="sy4">;</span>
<span class="co1">// ... &#38750;&#27604;&#36739;&#20989;&#25968; ...</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="co1">// &#32534;&#35793;&#22120;&#29983;&#25104;&#20840;&#37096;&#20845;&#20010;&#27604;&#36739;&#36816;&#31639;&#31526;</span>
<span class="co2">#include &lt;iostream&gt;</span>
<span class="co2">#include &lt;set&gt;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
Point pt1<span class="br0">{</span><span class="nu0">1</span>, <span class="nu0">1</span><span class="br0">}</span>, pt2<span class="br0">{</span><span class="nu0">1</span>, <span class="nu0">2</span><span class="br0">}</span><span class="sy4">;</span>
<a href="cpp-container-set.html"><span class="kw1277">std::<span class="me2">set</span></span></a><span class="sy1">&lt;</span>Point<span class="sy1">&gt;</span> s<span class="sy4">;</span> <span class="co1">// ok</span>
s.<span class="me1">insert</span><span class="br0">(</span>pt1<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// ok</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <a href="cpp-io-manip-boolalpha.html"><span class="kw1764">std::<span class="me2">boolalpha</span></span></a>
<span class="sy1">&lt;&lt;</span> <span class="br0">(</span>pt1 <span class="sy1">==</span> pt2<span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39; &#39;</span> <span class="co1">// false&#65307;operator== &#38544;&#24335;&#22320;&#37319;&#29992;&#40664;&#35748;&#29256;&#26412;</span>
<span class="sy1">&lt;&lt;</span> <span class="br0">(</span>pt1 <span class="sy3">!</span><span class="sy1">=</span> pt2<span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39; &#39;</span> <span class="co1">// true</span>
<span class="sy1">&lt;&lt;</span> <span class="br0">(</span>pt1 <span class="sy1">&lt;</span> pt2<span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39; &#39;</span> <span class="co1">// true</span>
<span class="sy1">&lt;&lt;</span> <span class="br0">(</span>pt1 <span class="sy1">&lt;=</span> pt2<span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39; &#39;</span> <span class="co1">// true</span>
<span class="sy1">&lt;&lt;</span> <span class="br0">(</span>pt1 <span class="sy1">&gt;</span> pt2<span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39; &#39;</span> <span class="co1">// false</span>
<span class="sy1">&lt;&lt;</span> <span class="br0">(</span>pt1 <span class="sy1">&gt;=</span> pt2<span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39; &#39;</span><span class="sy4">;</span><span class="co1">// false</span>
<span class="br0">}</span></pre></div>
</div>
</div>
<h4><span class="mw-headline" id=".E9.BB.98.E8.AE.A4.E7.9B.B8.E7.AD.89.E6.AF.94.E8.BE.83">&#40664;&#35748;&#30456;&#31561;&#27604;&#36739;</span></h4>
<p>&#31867;&#21487;&#20197;&#23450;&#20041; <span class="t-c"><span class="mw-geshi cpp source-cpp">operator<span class="sy1">==</span></span></span> &#20026;&#40664;&#35748;&#29256;&#26412;&#65292;&#23427;&#36820;&#22238;&#19968;&#20010; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span></span></span> &#20540;&#12290;&#36825;&#20250;&#20197;&#22768;&#26126;&#39034;&#24207;&#23545;&#27599;&#20010;&#22522;&#31867;&#21644;&#25104;&#21592;&#23376;&#23545;&#35937;&#29983;&#25104;&#19968;&#36718;&#30456;&#31561;&#27604;&#36739;&#12290;&#20004;&#20010;&#23545;&#35937;&#22312;&#23427;&#20204;&#27599;&#20010;&#22522;&#31867;&#21644;&#25104;&#21592;&#30456;&#31561;&#26102;&#30456;&#31561;&#12290;&#35813;&#26816;&#27979;&#20250;&#20197;&#22768;&#26126;&#39034;&#24207;&#22312;&#25214;&#21040;&#22522;&#31867;&#25110;&#25104;&#21592;&#37324;&#20986;&#29616;&#19981;&#30456;&#31561;&#30340;&#24773;&#20917;&#19979;&#30701;&#36335;&#12290;</p>
<p>&#19982;&#20219;&#20309; <span class="t-c"><span class="mw-geshi cpp source-cpp">operator<span class="sy1">==</span></span></span> &#37325;&#36733;&#30340;&#35268;&#21017;&#19968;&#26679;&#65292;&#19981;&#31561;&#27979;&#35797;&#20063;&#33021;&#34987;&#20801;&#35768;&#65306;</p>
<div class="t-example">
<div class="t-example-live-link"></div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">struct</span> Point <span class="br0">{</span>
<span class="kw4">int</span> x<span class="sy4">;</span>
<span class="kw4">int</span> y<span class="sy4">;</span>
<span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span><span class="kw4">const</span> Point<span class="sy3">&amp;</span><span class="br0">)</span> <span class="kw4">const</span> <span class="sy1">=</span> <span class="kw1">default</span><span class="sy4">;</span>
<span class="co1">// ... &#38750;&#27604;&#36739;&#20989;&#25968; ...</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="co1">// &#32534;&#35793;&#22120;&#29983;&#25104;&#20998;&#25104;&#21592;&#30340;&#30456;&#31561;&#27604;&#36739;</span>
<span class="co2">#include &lt;iostream&gt;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
Point pt1<span class="br0">{</span><span class="nu0">3</span>, <span class="nu0">5</span><span class="br0">}</span>, pt2<span class="br0">{</span><span class="nu0">2</span>, <span class="nu0">5</span><span class="br0">}</span><span class="sy4">;</span>
<a href="cpp-io-cout.html"><span class="kw1758">std::<span class="me2">cout</span></span></a> <span class="sy1">&lt;&lt;</span> <a href="cpp-io-manip-boolalpha.html"><span class="kw1764">std::<span class="me2">boolalpha</span></span></a>
<span class="sy1">&lt;&lt;</span> <span class="br0">(</span>pt1 <span class="sy3">!</span><span class="sy1">=</span> pt2<span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span> <span class="co1">// true</span>
<span class="sy1">&lt;&lt;</span> <span class="br0">(</span>pt1 <span class="sy1">==</span> pt1<span class="br0">)</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&#39;<span class="es1">\n</span>&#39;</span><span class="sy4">;</span> <span class="co1">// true</span>
<span class="kw1">struct</span> <span class="br0">[</span><span class="br0">[</span>maybe_unused<span class="br0">]</span><span class="br0">]</span> <span class="br0">{</span> <span class="kw4">int</span> x<span class="br0">{</span><span class="br0">}</span>, y<span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span> <span class="br0">}</span> p, q<span class="sy4">;</span>
<span class="co1">// if (p == q) { } // &#38169;&#35823;&#65306;&#39;operator==&#39; &#26410;&#34987;&#23450;&#20041;</span>
<span class="br0">}</span></pre></div>
</div>
</div>
<h4><span class="mw-headline" id=".E5.85.B6.E4.BB.96.E9.BB.98.E8.AE.A4.E6.AF.94.E8.BE.83.E6.93.8D.E4.BD.9C.E7.AC.A6">&#20854;&#20182;&#40664;&#35748;&#27604;&#36739;&#25805;&#20316;&#31526;</span></h4>
<p>&#22235;&#20010;&#20851;&#31995;&#36816;&#31639;&#31526;&#65288;<code>&lt;</code>&#65292;<code>&gt;</code>&#65292;<code>&lt;=</code>&#65292;<code>&gt;=</code>&#65289;&#22343;&#21487;&#20197;&#26174;&#24335;&#25351;&#23450;&#20026;&#40664;&#35748;&#29256;&#26412;&#12290;&#40664;&#35748;&#30340;&#20851;&#31995;&#36816;&#31639;&#31526;&#24517;&#39035;&#36820;&#22238; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span></span></span>&#12290;</p>
<p>&#22914;&#26524; <code>x &lt;=&gt; y</code> &#30340;&#37325;&#36733;&#20915;&#35758;&#65288;&#21253;&#25324;&#21442;&#25968;&#20132;&#25442;&#21518;&#30340; <code>operator&lt;=&gt;</code>&#65289;&#22833;&#36133;&#65292;&#25110; <code>operator@</code> &#26080;&#27861;&#34987;&#24212;&#29992;&#21040; <code>x &lt;=&gt; y</code> &#30340;&#32467;&#26524;&#65292;&#35813;&#25805;&#20316;&#31526;&#26159;&#24323;&#32622;&#30340;&#12290;&#21542;&#21017;&#65292;&#40664;&#35748;&#30340; <code>operator@</code> &#22312;&#37325;&#36733;&#20915;&#35758;&#36873;&#25321;&#21442;&#25968;&#39034;&#24207;&#19981;&#21464;&#30340; <code>operator&lt;=&gt;</code> &#26102;&#35843;&#29992; <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1">&lt;=&gt;</span> y @ <span class="nu0">0</span></span></span> &#65292;&#21542;&#21017;&#35843;&#29992; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">0</span> @ y <span class="sy1">&lt;=&gt;</span> x</span></span>&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">struct</span> HasNoRelational <span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> C <span class="br0">{</span>
<span class="kw1">friend</span> HasNoRelational operator<span class="sy1">&lt;=&gt;</span><span class="br0">(</span><span class="kw4">const</span> C<span class="sy3">&amp;</span>, <span class="kw4">const</span> C<span class="sy3">&amp;</span><span class="br0">)</span><span class="sy4">;</span>
<span class="kw4">bool</span> operator<span class="sy1">&lt;</span><span class="br0">(</span><span class="kw4">const</span> C<span class="sy3">&amp;</span><span class="br0">)</span> <span class="sy1">=</span> <span class="kw1">default</span><span class="sy4">;</span> <span class="co1">// OK&#65306;&#20989;&#25968;&#34987;&#24323;&#32622;</span>
<span class="br0">}</span><span class="sy4">;</span></pre></div>
</div>
<p>&#19982;&#27492;&#31867;&#20284;&#65292;<code>operator!=</code> &#20063;&#21487;&#20197;&#26174;&#24335;&#25351;&#23450;&#20026;&#40664;&#35748;&#29256;&#26412;&#12290;&#22914;&#26524; <code>x &lt;=&gt; y</code> &#30340;&#37325;&#36733;&#20915;&#35758;&#22833;&#36133;&#65292;&#25110; <code>x == y</code> &#32467;&#26524;&#30340;&#31867;&#22411;&#19981;&#20026; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span></span></span>&#65292;&#23427;&#20063;&#20250;&#34987;&#24323;&#32622;&#12290;&#40664;&#35748;&#30340; <code>operator!=</code> &#20250;&#26681;&#25454;&#37325;&#36733;&#20915;&#35758;&#30340;&#36873;&#25321;&#35843;&#29992; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy3">!</span><span class="br0">(</span>x <span class="sy1">==</span> y<span class="br0">)</span></span></span> &#25110;&#32773; <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy3">!</span><span class="br0">(</span>y <span class="sy1">==</span> x<span class="br0">)</span></span></span>&#12290;</p>
<p>&#25351;&#23450;&#20851;&#31995;&#36816;&#31639;&#31526;&#20351;&#29992;&#40664;&#35748;&#29256;&#26412;&#21487;&#29992;&#20110;&#21019;&#24314;&#21487;&#21462;&#22336;&#30340;&#20989;&#25968;&#12290;&#20854;&#20182;&#22330;&#21512;&#20165;&#38656;&#25552;&#20379; <span class="t-c"><span class="mw-geshi cpp source-cpp">operator<span class="sy1">&lt;=&gt;</span></span></span> &#21644; <span class="t-c"><span class="mw-geshi cpp source-cpp">operator<span class="sy1">==</span></span></span>&#12290;</p>
<h3><span class="mw-headline" id=".E8.87.AA.E5.AE.9A.E4.B9.89.E7.9A.84.E6.AF.94.E8.BE.83.E5.92.8C.E6.AF.94.E8.BE.83.E7.B1.BB.E5.88.AB">&#33258;&#23450;&#20041;&#30340;&#27604;&#36739;&#21644;&#27604;&#36739;&#31867;&#21035;</span></h3>
<p>&#22312;&#40664;&#35748;&#35821;&#20041;&#19981;&#36866;&#29992;&#30340;&#24773;&#20917;&#19979;&#65292;&#20363;&#22914;&#25104;&#21592;&#19981;&#33021;&#25353;&#39034;&#24207;&#27604;&#36739;&#65292;&#25110;&#32773;&#19981;&#33021;&#37319;&#29992;&#33258;&#28982;&#27604;&#36739;&#65292;&#37027;&#20040;&#31243;&#24207;&#21592;&#21487;&#20197;&#33258;&#23450;&#20041; <span class="t-c"><span class="mw-geshi cpp source-cpp">operator<span class="sy1">&lt;=&gt;</span></span></span> &#24182;&#35753;&#32534;&#35793;&#22120;&#29983;&#25104;&#21512;&#36866;&#30340;&#27604;&#36739;&#36816;&#31639;&#31526;&#12290;&#27604;&#36739;&#36816;&#31639;&#31526;&#30340;&#31181;&#31867;&#30001;&#29992;&#25143;&#23450;&#20041;&#30340; <span class="t-c"><span class="mw-geshi cpp source-cpp">operator<span class="sy1">&lt;=&gt;</span></span></span> &#20915;&#23450;&#12290;</p>
<p>&#36820;&#22238;&#31867;&#22411;&#26377;&#19977;&#31181;&#65306;</p>
<table class="wikitable" style="font-size:85%; text-align:center;">
<tr>
<th>&#36820;&#22238;&#31867;&#22411;</th>
<th>&#36816;&#31639;&#31526;</th>
<th>&#31561;&#20215;&#30340;&#20540;</th>
<th>&#26080;&#27861;&#27604;&#36739;&#30340;&#20540;</th>
</tr>
<tr>
<td><a href="cpp-utility-compare-strong_ordering.html"><tt>std::strong_ordering</tt></a></td>
<td>==&nbsp;!= &lt; &gt; &lt;= &gt;=</td>
<td>&#19981;&#21487;&#20197;&#34987;&#21306;&#20998;</td>
<td>&#19981;&#20801;&#35768;&#27604;&#36739;</td>
</tr>
<tr>
<td><a href="cpp-utility-compare-weak_ordering.html"><tt>std::weak_ordering</tt></a></td>
<td>==&nbsp;!= &lt; &gt; &lt;= &gt;=</td>
<td>&#21487;&#20197;&#34987;&#21306;&#20998;</td>
<td>&#19981;&#20801;&#35768;&#27604;&#36739;</td>
</tr>
<tr>
<td><a href="cpp-utility-compare-partial_ordering.html"><tt>std::partial_ordering</tt></a></td>
<td>==&nbsp;!= &lt; &gt; &lt;= &gt;=</td>
<td>&#21487;&#20197;&#34987;&#21306;&#20998;</td>
<td>&#20801;&#35768;&#27604;&#36739;</td>
</tr>
</table>
<h4><span class="mw-headline" id=".E5.BC.BA.E5.BA.8F">&#24378;&#24207;</span></h4>
<p>&#22312;&#36825;&#20010;&#33258;&#23450;&#20041; <code>operator&lt;=&gt;</code> &#36820;&#22238; <a href="cpp-utility-compare-strong_ordering.html"><tt>std::strong_ordering</tt></a> &#30340;&#20363;&#23376;&#20013;&#65292;&#35813;&#25805;&#20316;&#31526;&#27604;&#36739;&#20102;&#31867;&#30340;&#27599;&#20010;&#25104;&#21592;&#65292;&#21482;&#26159;&#39034;&#24207;&#19981;&#21516;&#65288;&#22312;&#36825;&#37324;&#21517;&#22312;&#22995;&#21069;&#38754;&#27604;&#36739;&#65289;&#12290;</p>
<div class="t-example">
<div class="t-example-live-link"></div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="co2">#include &lt;compare&gt;</span>
<span class="co2">#include &lt;string&gt;</span>
<span class="kw1">struct</span> Base <span class="br0">{</span>
<a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a> zip<span class="sy4">;</span>
<span class="kw4">auto</span> operator<span class="sy1">&lt;=&gt;</span><span class="br0">(</span><span class="kw4">const</span> Base<span class="sy3">&amp;</span><span class="br0">)</span> <span class="kw4">const</span> <span class="sy1">=</span> <span class="kw1">default</span><span class="sy4">;</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="kw1">struct</span> TotallyOrdered <span class="sy4">:</span> Base <span class="br0">{</span>
<a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a> tax_id<span class="sy4">;</span>
<a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a> first_name<span class="sy4">;</span>
<a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a> last_name<span class="sy4">;</span>
<span class="kw1">public</span><span class="sy4">:</span>
<span class="co1">// &#33258;&#23450;&#20041; operator&lt;=&gt; &#65292;&#22240;&#20026;&#25105;&#20204;&#24076;&#26395;&#65288;&#22312;&#27604;&#36739;&#22995;&#21069;&#65289;&#20808;&#27604;&#36739;&#21517;&#65306;</span>
std<span class="sy4">::</span><span class="me2">strong_ordering</span> operator<span class="sy1">&lt;=&gt;</span><span class="br0">(</span><span class="kw4">const</span> TotallyOrdered<span class="sy3">&amp;</span> that<span class="br0">)</span> <span class="kw4">const</span> <span class="br0">{</span>
<span class="kw1">if</span> <span class="br0">(</span><span class="kw4">auto</span> cmp <span class="sy1">=</span> <span class="br0">(</span>Base<span class="sy3">&amp;</span><span class="br0">)</span><span class="br0">(</span><span class="sy2">*</span>this<span class="br0">)</span> <span class="sy1">&lt;=&gt;</span> <span class="br0">(</span>Base<span class="sy3">&amp;</span><span class="br0">)</span>that<span class="sy4">;</span> cmp <span class="sy3">!</span><span class="sy1">=</span> <span class="nu0">0</span><span class="br0">)</span>
<span class="kw1">return</span> cmp<span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span><span class="kw4">auto</span> cmp <span class="sy1">=</span> last_name <span class="sy1">&lt;=&gt;</span> that.<span class="me1">last_name</span><span class="sy4">;</span> cmp <span class="sy3">!</span><span class="sy1">=</span> <span class="nu0">0</span><span class="br0">)</span>
<span class="kw1">return</span> cmp<span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span><span class="kw4">auto</span> cmp <span class="sy1">=</span> first_name <span class="sy1">&lt;=&gt;</span> that.<span class="me1">first_name</span><span class="sy4">;</span> cmp <span class="sy3">!</span><span class="sy1">=</span> <span class="nu0">0</span><span class="br0">)</span>
<span class="kw1">return</span> cmp<span class="sy4">;</span>
<span class="kw1">return</span> tax_id <span class="sy1">&lt;=&gt;</span> that.<span class="me1">tax_id</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="co1">// ... &#38750;&#27604;&#36739;&#20989;&#25968; ...</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="co1">// &#32534;&#35793;&#22120;&#29983;&#25104;&#20840;&#37096;&#22235;&#20010;&#20851;&#31995;&#36816;&#31639;&#31526;</span>
<span class="co2">#include &lt;cassert&gt;</span>
<span class="co2">#include &lt;set&gt;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
TotallyOrdered to1<span class="br0">{</span><span class="st0">&quot;a&quot;</span>,<span class="st0">&quot;b&quot;</span>,<span class="st0">&quot;c&quot;</span>,<span class="st0">&quot;d&quot;</span><span class="br0">}</span>, to2<span class="br0">{</span><span class="st0">&quot;a&quot;</span>,<span class="st0">&quot;b&quot;</span>,<span class="st0">&quot;d&quot;</span>,<span class="st0">&quot;c&quot;</span><span class="br0">}</span><span class="sy4">;</span>
<a href="cpp-container-set.html"><span class="kw1277">std::<span class="me2">set</span></span></a><span class="sy1">&lt;</span>TotallyOrdered<span class="sy1">&gt;</span> s<span class="sy4">;</span> <span class="co1">// OK</span>
s.<span class="me1">insert</span><span class="br0">(</span>to1<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// OK</span>
<a href="cpp-error-assert.html"><span class="kw774">assert</span></a><span class="br0">(</span>to2 <span class="sy1">&lt;=</span> to1<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// OK&#65292;&#35843;&#29992; &lt;=&gt; &#19968;&#27425;</span>
<span class="br0">}</span></pre></div>
</div>
</div>
<p>&#27880;&#65306;&#36820;&#22238; <a href="cpp-utility-compare-strong_ordering.html"><tt>std::strong_ordering</tt></a> &#30340;&#25805;&#20316;&#31526;&#38656;&#35201;&#27604;&#36739;&#27599;&#20010;&#25104;&#21592;&#65292;&#22240;&#20026;&#22914;&#26524;&#26377;&#25104;&#21592;&#27809;&#26377;&#34987;&#27604;&#36739;&#65292;&#21487;&#26367;&#25442;&#24615;&#20250;&#21463;&#29301;&#36830;&#65306;&#20004;&#20010;&#21487;&#34987;&#21306;&#20998;&#30340;&#20540;&#26377;&#21487;&#33021;&#20250;&#27604;&#36739;&#30456;&#31561;&#12290;</p>
<h4><span class="mw-headline" id=".E5.BC.B1.E5.BA.8F">&#24369;&#24207;</span></h4>
<p>&#22312;&#36825;&#20010;&#33258;&#23450;&#20041; <code>operator&lt;=&gt;</code> &#36820;&#22238; <a href="cpp-utility-compare-weak_ordering.html"><tt>std::weak_ordering</tt></a> &#30340;&#20363;&#23376;&#20013;&#65292;&#35813;&#25805;&#20316;&#31526;&#19981;&#20998;&#22823;&#23567;&#20889;&#22320;&#27604;&#36739;&#20102;&#31867;&#30340;&#23383;&#31526;&#20018;&#25104;&#21592;&#65306;&#36825;&#21644;&#40664;&#35748;&#27604;&#36739;&#19981;&#21516;&#65288;&#22240;&#27492;&#38656;&#35201;&#33258;&#23450;&#20041;&#36816;&#31639;&#31526;&#65289;&#19988;&#36890;&#36807;&#36825;&#31181;&#26041;&#24335;&#27604;&#36739;&#30456;&#31561;&#30340;&#20004;&#20010;&#23383;&#31526;&#20018;&#21487;&#33021;&#21487;&#20197;&#34987;&#21306;&#20998;&#12290;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">class</span> CaseInsensitiveString <span class="br0">{</span>
<a href="cpp-string-basic_string.html"><span class="kw1230">std::<span class="me2">string</span></span></a> s<span class="sy4">;</span>
<span class="kw1">public</span><span class="sy4">:</span>
std<span class="sy4">::</span><span class="me2">weak_ordering</span> operator<span class="sy1">&lt;=&gt;</span><span class="br0">(</span><span class="kw4">const</span> CaseInsensitiveString<span class="sy3">&amp;</span> b<span class="br0">)</span> <span class="kw4">const</span> <span class="br0">{</span>
<span class="kw1">return</span> case_insensitive_compare<span class="br0">(</span>s.<span class="me1">c_str</span><span class="br0">(</span><span class="br0">)</span>, b.<span class="me1">s</span>.<span class="me1">c_str</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span>
std<span class="sy4">::</span><span class="me2">weak_ordering</span> operator<span class="sy1">&lt;=&gt;</span><span class="br0">(</span><span class="kw4">const</span> <span class="kw4">char</span><span class="sy2">*</span> b<span class="br0">)</span> <span class="kw4">const</span> <span class="br0">{</span>
<span class="kw1">return</span> case_insensitive_compare<span class="br0">(</span>s.<span class="me1">c_str</span><span class="br0">(</span><span class="br0">)</span>, b<span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="co1">// ... &#38750;&#27604;&#36739;&#20989;&#25968; ...</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="co1">// &#32534;&#35793;&#22120;&#29983;&#25104;&#20840;&#37096;&#22235;&#20010;&#20851;&#31995;&#36816;&#31639;&#31526;</span>
CaseInsensitiveString cis1, cis2<span class="sy4">;</span>
<a href="cpp-container-set.html"><span class="kw1277">std::<span class="me2">set</span></span></a><span class="sy1">&lt;</span>CaseInsensitiveString<span class="sy1">&gt;</span> s<span class="sy4">;</span> <span class="co1">// OK</span>
s.<span class="me1">insert</span><span class="br0">(</span><span class="coMULTI">/*...*/</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// ok</span>
<span class="kw1">if</span> <span class="br0">(</span>cis1 <span class="sy1">&lt;=</span> cis2<span class="br0">)</span> <span class="br0">{</span> <span class="coMULTI">/*...*/</span> <span class="br0">}</span> <span class="co1">// OK&#65292;&#25191;&#34892;&#19968;&#27425;&#27604;&#36739;&#25805;&#20316;</span>
<span class="co1">// &#32534;&#35793;&#22120;&#20063;&#29983;&#25104;&#20102;&#20840;&#37096;&#20843;&#20010;&#28151;&#21512;&#21442;&#25968;&#30340;&#20851;&#31995;&#36816;&#31639;&#31526;</span>
<span class="kw1">if</span> <span class="br0">(</span>cis1 <span class="sy1">&lt;=</span> <span class="st0">&quot;xyzzy&quot;</span><span class="br0">)</span> <span class="br0">{</span> <span class="coMULTI">/*...*/</span> <span class="br0">}</span> <span class="co1">// OK&#65292;&#25191;&#34892;&#19968;&#27425;&#27604;&#36739;&#25805;&#20316;</span>
<span class="kw1">if</span> <span class="br0">(</span><span class="st0">&quot;xyzzy&quot;</span> <span class="sy1">&gt;=</span> cis1<span class="br0">)</span> <span class="br0">{</span> <span class="coMULTI">/*...*/</span> <span class="br0">}</span> <span class="co1">// OK&#65292;&#35821;&#20041;&#30456;&#21516;</span></pre></div>
</div>
<p>&#27880;&#65306;&#36825;&#20010;&#20363;&#23376;&#23637;&#31034;&#20102;&#21442;&#25968;&#31867;&#22411;&#19981;&#21516;&#30340; <code>operator&lt;=&gt;</code> &#30340;&#25928;&#26524;&#65306;&#23427;&#29983;&#25104;&#20102;&#21452;&#21521;&#30340;&#19981;&#21516;&#31867;&#22411;&#21442;&#25968;&#30340;&#27604;&#36739;&#12290;</p>
<h4><span class="mw-headline" id=".E5.81.8F.E5.BA.8F">&#20559;&#24207;</span></h4>
<p>&#20559;&#24207;&#26159;&#19968;&#31181;&#20801;&#35768;&#26080;&#27861;&#27604;&#36739;&#65288;&#26080;&#24207;&#65289;&#30340;&#20540;&#30340;&#27604;&#36739;&#30340;&#25490;&#24207;&#65292;&#27604;&#22914;&#21253;&#25324; NaN &#20540;&#30340;&#28014;&#28857;&#25490;&#24207;&#65292;&#25110;&#22312;&#36825;&#20010;&#20363;&#23376;&#37324;&#30340;&#27809;&#26377;&#20851;&#32852;&#30340;&#20154;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="cpp source-cpp">
<pre class="de1"><span class="kw1">class</span> PersonInFamilyTree <span class="br0">{</span> <span class="co1">// ...</span>
<span class="kw1">public</span><span class="sy4">:</span>
std<span class="sy4">::</span><span class="me2">partial_ordering</span> operator<span class="sy1">&lt;=&gt;</span><span class="br0">(</span><span class="kw4">const</span> PersonInFamilyTree<span class="sy3">&amp;</span> that<span class="br0">)</span> <span class="kw4">const</span> <span class="br0">{</span>
<span class="kw1">if</span> <span class="br0">(</span>this<span class="sy2">-</span><span class="sy1">&gt;</span>is_the_same_person_as <span class="br0">(</span> that<span class="br0">)</span><span class="br0">)</span> <span class="kw1">return</span> partial_ordering<span class="sy4">::</span><span class="me2">equivalent</span><span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span>this<span class="sy2">-</span><span class="sy1">&gt;</span>is_transitive_child_of<span class="br0">(</span> that<span class="br0">)</span><span class="br0">)</span> <span class="kw1">return</span> partial_ordering<span class="sy4">::</span><span class="me2">less</span><span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span>that. <span class="me1">is_transitive_child_of</span><span class="br0">(</span><span class="sy2">*</span>this<span class="br0">)</span><span class="br0">)</span> <span class="kw1">return</span> partial_ordering<span class="sy4">::</span><span class="me2">greater</span><span class="sy4">;</span>
<span class="kw1">return</span> partial_ordering<span class="sy4">::</span><span class="me2">unordered</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="co1">// ... &#38750;&#27604;&#36739;&#20989;&#25968; ...</span>
<span class="br0">}</span><span class="sy4">;</span>
<span class="co1">// &#32534;&#35793;&#22120;&#29983;&#25104;&#20840;&#37096;&#22235;&#20010;&#20851;&#31995;&#36816;&#31639;&#31526;</span>
PersonInFamilyTree per1, per2<span class="sy4">;</span>
<span class="kw1">if</span> <span class="br0">(</span>per1 <span class="sy1">&lt;</span> per2<span class="br0">)</span> <span class="br0">{</span> <span class="coMULTI">/*...*/</span> <span class="br0">}</span> <span class="co1">// OK&#65292;per2 &#26159; per1 &#30340;&#20808;&#20154;</span>
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span>per1 <span class="sy1">&gt;</span> per2<span class="br0">)</span> <span class="br0">{</span> <span class="coMULTI">/*...*/</span> <span class="br0">}</span> <span class="co1">// OK&#65292;per1 &#26159; per2 &#30340;&#20808;&#20154;</span>
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span>std<span class="sy4">::</span><span class="me2">is_eq</span><span class="br0">(</span>per1 <span class="sy1">&lt;=&gt;</span> per2<span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span> <span class="coMULTI">/*...*/</span> <span class="br0">}</span> <span class="co1">// OK&#65292;per1 &#26159; per2&#65288;&#21516;&#19968;&#20154;&#65289;</span>
<span class="kw1">else</span> <span class="br0">{</span> <span class="coMULTI">/*...*/</span> <span class="br0">}</span> <span class="co1">// per1 &#19982; per2 &#27809;&#26377;&#65288;&#30452;&#31995;&#65289;&#20851;&#32852;</span>
<span class="kw1">if</span> <span class="br0">(</span>per1 <span class="sy1">&lt;=</span> per2<span class="br0">)</span> <span class="br0">{</span> <span class="coMULTI">/*...*/</span> <span class="br0">}</span> <span class="co1">// OK&#65292;per2 &#26159; per1 &#25110; per1 &#30340;&#20808;&#20154;</span>
<span class="kw1">if</span> <span class="br0">(</span>per1 <span class="sy1">&gt;=</span> per2<span class="br0">)</span> <span class="br0">{</span> <span class="coMULTI">/*...*/</span> <span class="br0">}</span> <span class="co1">// OK&#65292;per1 &#26159; per2 &#25110; per2 &#30340;&#20808;&#20154;</span>
<span class="kw1">if</span> <span class="br0">(</span>std<span class="sy4">::</span><span class="me2">is_neq</span><span class="br0">(</span>per1 <span class="sy1">&lt;=&gt;</span> per2<span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span> <span class="coMULTI">/*...*/</span> <span class="br0">}</span> <span class="co1">// OK&#65292;per1 &#19981;&#26159; per2&#65288;&#20294;&#21487;&#33021;&#26377;&#30452;&#31995;&#20851;&#32852;&#65289;</span></pre></div>
</div>
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">&#21442;&#38405;</span></h3>
<ul>
<li>&#35843;&#29992;&#37325;&#36733;&#36816;&#31639;&#31526;&#20013;&#30340;<a href="cpp-language-overload_resolution.html#.E8.B0.83.E7.94.A8.E9.87.8D.E8.BD.BD.E8.BF.90.E7.AE.97.E7.AC.A6">&#37325;&#36733;&#20915;&#35758;</a></li>
<li>&#20869;&#24314;&#30340;<a href="cpp-language-operator_comparison.html#.E4.B8.89.E8.B7.AF.E6.AF.94.E8.BE.83">&#19977;&#36335;&#27604;&#36739;&#36816;&#31639;&#31526;</a></li>
<li>&#27604;&#36739;&#36816;&#31639;&#31526;&#30340;<a href="cpp-language-operators.html#.E6.AF.94.E8.BE.83.E8.BF.90.E7.AE.97.E7.AC.A6">&#36816;&#31639;&#31526;&#37325;&#36733;</a></li>
</ul>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>