676 lines
39 KiB
HTML
676 lines
39 KiB
HTML
<!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>函数对象</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_utility_functional skin-cppreference2 action-view cpp-navbar">
|
|
<div id="cpp-content-base">
|
|
<div id="content"><a id="top"></a>
|
|
<h1 id="firstHeading" class="firstHeading">函数对象</h1>
|
|
<div id="bodyContent">
|
|
<div id="contentSub"><span class="subpages">< <a href="cpp.html">cpp</a>‎ | <a href="cpp-utility.html">utility</a></span></div>
|
|
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
|
<p>任何定义了函数调用操作符的对象都是<i>函数对象</i>。C++ 支持创建、操作新的函数对象,同时也提供了许多内置的函数对象。</p>
|
|
<h3><span class="mw-headline" id=".E5.87.BD.E6.95.B0.E5.8C.85.E8.A3.85.E5.99.A8">函数包装器</span></h3>
|
|
<p><span class="t-lc"><a href="cpp-utility-functional-function.html">std::function</a></span> 提供存储任意类型函数对象的支持。</p>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-function.html"><span class="t-lines"><span>function</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>包装具有指定函数调用签名的任意可复制构造类型的可调用对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-move_only_function.html"><span class="t-lines"><span>move_only_function</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx23">(C++23)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>包装具有指定函数调用签名的任意类型的可调用对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-bad_function_call.html"><span class="t-lines"><span>bad_function_call</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>调用空的 <span class="t-lc"><a href="cpp-utility-functional-function.html">std::function</a></span> 时抛出的异常<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-mem_fn.html"><span class="t-lines"><span>mem_fn</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>从成员指针创建出函数对象<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E5.87.BD.E6.95.B0.E8.B0.83.E7.94.A8">函数调用</span></h3>
|
|
<p><span class="t-lc"><a href="cpp-utility-functional-invoke.html">std::invoke</a></span> 能以给定参数调用任何<a href="cpp-named_req-Callable.html"><span style="font-style:italic">可调用</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(Callable)</span></a> 对象。</p>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-invoke.html"><span class="t-lines"><span>invoke</span><span>invoke_r</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx17">(C++17)</span></span><span><span class="t-mark-rev t-since-cxx23">(C++23)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>以给定实参<span class="t-rev-inl t-since-cxx23"><span>和可能指定的返回类型</span> <span><span class="t-mark-rev t-since-cxx23">(C++23 起)</span></span></span>调用任意<a href="cpp-named_req-Callable.html"><span style="font-style:italic">可调用</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(Callable)</span></a> 对象<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E6.81.92.E7.AD.89">恒等</span></h3>
|
|
<p><span class="t-lc">std::identity</span> 是恒等函数对象:它返回其不修改的参数。</p>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-identity.html"><span class="t-lines"><span>identity</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>返回其未修改的参数的函数对象<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E9.83.A8.E5.88.86.E5.87.BD.E6.95.B0.E5.BA.94.E7.94.A8">部分函数应用</span></h3>
|
|
<p><span class="t-lc">std::bind_front</span> 与 <span class="t-lc"><a href="cpp-utility-functional-bind.html">std::bind</a></span> 提供<a href="https://en.wikipedia.org/wiki/Partial_application" class="extiw" title="enwiki:Partial application">部分函数应用</a>的支持,即绑定参数到函数以创建新函数。</p>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-bind_front.html"><span class="t-lines"><span>bind_front</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>按顺序绑定一定数量的参数到函数对象<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-bind.html"><span class="t-lines"><span>bind</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>绑定一或多个实参到函数对象<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-is_bind_expression.html"><span class="t-lines"><span>is_bind_expression</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>指示对象为 <code>std::bind</code> 表达式,或能被用作这种表达式<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-is_placeholder.html"><span class="t-lines"><span>is_placeholder</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>表明一个对象是标准占位符,或者可以用作标准占位符<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于命名空间 <code>std::placeholders</code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-placeholders.html"><span class="t-lines"><span>_1, _2, _3, _4, ...</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>用作 <code>std::bind</code> 表达式中的未绑定实参的占位符<br />
|
|
<span class="t-mark">(常量)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E5.8F.96.E5.8F.8D.E5.99.A8">取反器</span></h3>
|
|
<p><span class="t-lc"><a href="cpp-utility-functional-not_fn.html">std::not_fn</a></span> 创建对传递给它的可调用对象的结果取反的函数对象。</p>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-not_fn.html"><span class="t-lines"><span>not_fn</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx17">(C++17)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>创建返回其保有的函数对象的结果之补的函数对象<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E6.90.9C.E7.B4.A2.E5.99.A8">搜索器</span></h3>
|
|
<p>提供实现数种字符串搜索算法的搜索器。它们能直接使用或用于 <span class="t-lc"><a href="cpp-algorithm-search.html">std::search</a></span> 。</p>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-default_searcher.html"><span class="t-lines"><span>default_searcher</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx17">(C++17)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>标准 C++ 库搜索算法实现<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-boyer_moore_searcher.html"><span class="t-lines"><span>boyer_moore_searcher</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx17">(C++17)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>Boyer-Moore 搜索算法实现<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-boyer_moore_horspool_searcher.html"><span class="t-lines"><span>boyer_moore_horspool_searcher</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx17">(C++17)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>Boyer-Moore-Horspool 搜索算法实现<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8.E5.8C.85.E8.A3.85.E5.99.A8">引用包装器</span></h3>
|
|
<p>引用包装器允许存储引用到可复制的函数对象中:</p>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-reference_wrapper.html"><span class="t-lines"><span>reference_wrapper</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td><a href="cpp-named_req-CopyConstructible.html"><span style="font-style:italic">可复制构造</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(CopyConstructible)</span></a> 且<a href="cpp-named_req-CopyAssignable.html"><span style="font-style:italic">可复制赋值</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(CopyAssignable)</span></a> 的引用包装器<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-ref.html"><span class="t-lines"><span>ref</span><span>cref</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span><span><span class="t-mark-rev t-since-cxx11">(C++11)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>创建具有从其实参推导的类型的 <span class="t-lc"><a href="cpp-utility-functional-reference_wrapper.html">std::reference_wrapper</a></span><br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-unwrap_reference.html"><span class="t-lines"><span>unwrap_reference</span><span>unwrap_ref_decay</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>获取包装于 <span class="t-lc"><a href="cpp-utility-functional-reference_wrapper.html">std::reference_wrapper</a></span> 的引用类型<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E8.BF.90.E7.AE.97.E7.AC.A6.E5.87.BD.E6.95.B0.E5.AF.B9.E8.B1.A1">运算符函数对象</span></h3>
|
|
<p>C++ 针对常用的算术和逻辑运算定义了很多函数对象:</p>
|
|
<table class="t-dsc-begin">
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E7.AE.97.E6.9C.AF.E8.BF.90.E7.AE.97">算术运算</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-plus.html"><span class="t-lines"><span>plus</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy2">+</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-minus.html"><span class="t-lines"><span>minus</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy2">-</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-multiplies.html"><span class="t-lines"><span>multiplies</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy2">*</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-divides.html"><span class="t-lines"><span>divides</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy2">/</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-modulus.html"><span class="t-lines"><span>modulus</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy2">%</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-negate.html"><span class="t-lines"><span>negate</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy2">-</span>x</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E6.AF.94.E8.BE.83">比较</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-equal_to.html"><span class="t-lines"><span>equal_to</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1">==</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-not_equal_to.html"><span class="t-lines"><span>not_equal_to</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy3">!</span><span class="sy1">=</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-greater.html"><span class="t-lines"><span>greater</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1">></span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-less.html"><span class="t-lines"><span>less</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1"><</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-greater_equal.html"><span class="t-lines"><span>greater_equal</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1">>=</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-less_equal.html"><span class="t-lines"><span>less_equal</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1"><=</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E9.80.BB.E8.BE.91.E8.BF.90.E7.AE.97">逻辑运算</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-logical_and.html"><span class="t-lines"><span>logical_and</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy3">&&</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-logical_or.html"><span class="t-lines"><span>logical_or</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy3">||</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-logical_not.html"><span class="t-lines"><span>logical_not</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy3">!</span>x</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E4.BD.8D.E8.BF.90.E7.AE.97">位运算</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-bit_and.html"><span class="t-lines"><span>bit_and</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy3">&</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-bit_or.html"><span class="t-lines"><span>bit_or</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy3">|</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-bit_xor.html"><span class="t-lines"><span>bit_xor</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy3">^</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-bit_not.html"><span class="t-lines"><span>bit_not</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx14">(C++14)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">~x</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E5.8F.97.E7.BA.A6.E6.9D.9F.E7.9A.84.E6.AF.94.E8.BE.83.E5.87.BD.E6.95.B0.E5.AF.B9.E8.B1.A1">受约束的比较函数对象</span></h3>
|
|
<p>C++20 定义一组<a href="cpp-language-constraints.html">受约束的</a>比较函数对象。相等运算符 (<code>ranges::equal_to</code> 与 <code>ranges::not_equal_to</code>) 要求参数类型实现 <a href="cpp-concepts-equality_comparable.html"><code>equality_comparable_with</code></a> 。关系运算符( <code>ranges::less</code> 、 <code>ranges::greater</code> 、 <code>ranges::less_equal</code> 及 <code>ranges::greater_equal</code> )要求参数类型实现 <a href="cpp-concepts-totally_ordered.html"><code>totally_ordered_with</code></a> 。三路比较运算符( <code>compare_three_way</code> )要求参数类型实现 <a href="cpp-utility-compare-three_way_comparable.html"><code>three_way_comparable_with</code></a> 。</p>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-ranges-equal_to.html"><span class="t-lines"><span>ranges::equal_to</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1">==</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-ranges-not_equal_to.html"><span class="t-lines"><span>ranges::not_equal_to</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy3">!</span><span class="sy1">=</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-ranges-less.html"><span class="t-lines"><span>ranges::less</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1"><</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-ranges-greater.html"><span class="t-lines"><span>ranges::greater</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1">></span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-ranges-less_equal.html"><span class="t-lines"><span>ranges::less_equal</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1"><=</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-ranges-greater_equal.html"><span class="t-lines"><span>ranges::greater_equal</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1">>=</span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-compare-compare_three_way.html"><span class="t-lines"><span>compare_three_way</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>实现 <span class="t-c"><span class="mw-geshi cpp source-cpp">x <span class="sy1"><=></span> y</span></span> 的函数对象<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E6.97.A7.E5.BC.8F.E7.BB.91.E5.AE.9A.E5.99.A8.E4.B8.8E.E9.80.82.E9.85.8D.E5.99.A8">旧式绑定器与适配器</span></h3>
|
|
<p>早期提供功能支持的几个工具在 C++11 中弃用,并于 C++17 中移除(旧否定器于 C++17 中弃用并于 C++20 中移除):</p>
|
|
<table class="t-dsc-begin">
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E5.9F.BA.E7.B1.BB">基类</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-unary_function.html"><span class="t-lines"><span>unary_function</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span></span><span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>与适配器兼容的一元函数基类<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-binary_function.html"><span class="t-lines"><span>binary_function</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span></span><span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>与适配器兼容的二元函数基类<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E7.BB.91.E5.AE.9A.E5.99.A8">绑定器</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-binder12.html"><span class="t-lines"><span>binder1st</span><span>binder2nd</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>持有一个二元函数及其实参之一的函数对象<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-bind12.html"><span class="t-lines"><span>bind1st</span><span>bind2nd</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>将一个实参绑定到二元函数<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h5><span class="mw-headline" id=".E5.87.BD.E6.95.B0.E9.80.82.E9.85.8D.E5.99.A8">函数适配器</span></h5>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-pointer_to_unary_function.html"><span class="t-lines"><span>pointer_to_unary_function</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span></span><span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>适配器兼容的包装,用于包装一元函数的指针<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-pointer_to_binary_function.html"><span class="t-lines"><span>pointer_to_binary_function</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span></span><span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>适配器兼容的包装,用于包装二元函数的指针<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-ptr_fun.html"><span class="t-lines"><span>ptr_fun</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>从函数指针创建与适配器兼容的函数对象包装器<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-mem_fun_t.html"><span class="t-lines"><span>mem_fun_t</span><span>mem_fun1_t</span><span>const_mem_fun_t</span><span>const_mem_fun1_t</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span></span><span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>指向零元或一元成员函数指针的包装器,可以一个对象指针调用<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-mem_fun.html"><span class="t-lines"><span>mem_fun</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>从成员函数指针创建包装器,可以一个对象指针调用<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-mem_fun_ref_t.html"><span class="t-lines"><span>mem_fun_ref_t</span><span>mem_fun1_ref_t</span><span>const_mem_fun_ref_t</span><span>const_mem_fun1_ref_t</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span></span><span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>指向零元或一元成员函数指针的包装器,可以一个对象引用调用<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-mem_fun_ref.html"><span class="t-lines"><span>mem_fun_ref</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx11">(C++11 中弃用)</span></span><span><span class="t-mark-rev t-until-cxx17">(C++17 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>从成员函数指针创建包装器,能以一个对象引用调用<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-unary_negate.html"><span class="t-lines"><span>unary_negate</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx17">(C++17 中弃用)</span></span><span><span class="t-mark-rev t-until-cxx20">(C++20 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>包装器函数对象,返回所持有的一元谓词的补<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-binary_negate.html"><span class="t-lines"><span>binary_negate</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx17">(C++17 中弃用)</span></span><span><span class="t-mark-rev t-until-cxx20">(C++20 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>包装器函数对象,返回所持有的二元谓词的补<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-not1.html"><span class="t-lines"><span>not1</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx17">(C++17 中弃用)</span><span class="t-mark-rev t-until-cxx20">(C++20 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>构造定制的 <span class="t-lc"><a href="cpp-utility-functional-unary_negate.html">std::unary_negate</a></span> 对象<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-functional-not2.html"><span class="t-lines"><span>not2</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-deprecated-cxx17">(C++17 中弃用)</span><span class="t-mark-rev t-until-cxx20">(C++20 中移除)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>构造定制的 <span class="t-lc"><a href="cpp-utility-functional-binary_negate.html">std::binary_negate</a></span> 对象<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|