std::binary_function
来自 cppreference.com
< cpp | utility | functional
定义在头文件 <functional> 中 |
||
template< class Arg1, |
(C++11 中已弃用) (在 C++17 中删除) |
|
std::binary_function
是用于创建具有两个参数的函数对象的基类。
std::binary_function
没有定义 operator(); 预计派生类将定义此项。std::binary_function
仅提供三种类型 - first_argument_type
、second_argument_type
和 result_type
- 由模板参数定义。
一些标准库函数对象适配器,例如 std::not2,要求它们适配的函数对象具有某些定义的类型;std::not2 要求被适配的函数对象具有名为 first_argument_type
和 second_argument_type
的两种类型。从 std::binary_function
派生采用两个参数的函数对象是使它们与这些适配器兼容的简便方法。
std::binary_function
在 C++11 中已弃用,并在 C++17 中删除。
[编辑] 成员类型
类型 | 定义 |
first_argument_type
|
Arg1
|
second_argument_type
|
Arg2
|
result_type
|
Result
|
[编辑] 示例
运行此代码
#include <algorithm> #include <functional> #include <iostream> #include <vector> struct same : std::binary_function<int, int, bool> { bool operator()(int a, int b) const { return a == b; } }; int main() { std::vector<char> v1{'A', 'B', 'C', 'D', 'E'}; std::vector<char> v2{'E', 'D', 'C', 'B', 'A'}; std::vector<bool> v3(v1.size()); std::transform(v1.begin(), v1.end(), v2.begin(), v3.begin(), std::not2(same())); std::cout << std::boolalpha; for (std::size_t i = 0; i < v1.size(); ++i) std::cout << v1[i] << " != " << v2[i] << " : " << v3[i] << '\n'; }
输出
A != E : true B != D : true C != C : false D != B : true E != A : true
[编辑] 另请参见
(C++11) |
任何可复制构造的可调用对象的副本包装器 (类模板) |
(C++23) |
任何支持给定调用签名中限定符的可调用对象的仅移动包装器 (类模板) |
(C++11 中已弃用)(在 C++17 中删除) |
从指向函数的指针创建适配器兼容函数对象包装器 (函数模板) |
(C++11 中已弃用)(在 C++17 中删除) |
指向二元函数的指针的适配器兼容包装器 (类模板) |
(C++11 中已弃用)(在 C++17 中删除) |
适配器兼容的一元函数基类 (类模板) |