bind1st and bind2nd
bind1st and bind2nd
我看到了以下参考文献:
bind1st
bind2nd
我不明白的是两者之间的区别。有人能帮我了解一下其中的区别吗?举个例子会更有帮助。
bind1st
绑定第一个参数(例如,您有foo(int a, int b)
,那么bind1st(foo, 1)(bar)
将等效于foo(1, bar)
),bind2nd
绑定第二个参数。不过,不要使用它们,它们几乎是无用的——使用广义的boost::bind
(或者C++0x中的std::bind
)。
假设您有一个函数对象f(x,y)
和一个算法,该算法需要一个只有一个变量的functoid。然后有两种可能性:
- 为
y
设置一些固定值,并让算法在x
上工作 - 为
x
设置一些固定值,并让算法在y
上工作
这就是区别。
这是显而易见的。bind1st
将一个值绑定到函子的第一个操作数(假设您知道C++中的函子是什么),bind2nd
绑定到第二个操作数。但对于像+
(或std::plus
)这样的交换算子,它实际上没有什么区别(如果你在那个例子中没有用非交换行为重载+
)。
相关文章:
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 为什么 Clang 不允许"and"作为函数名称?
- 位阵列上的快速AND运算
- 是否可以在 C++03 中定义'move-and-swap idiom'等效项
- BoostPython and CMake
- OpenSSL BIO and SSL_read
- Gurobi GRBModel and GRBmodel in C++
- std::visit and std::variant usage
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- Directx12 and keystrokes
- different between int **arr =new int [ n]; and int a[i][j]?
- C++ getenv and setenv
- Inference pytorch C++ with alexnet and cv::imread image
- Visual Studio 2019 C++ and std::filesystem
- 保证逻辑 AND 表达式中的函数调用
- python ctypes and C++ pointers
- C++ const char with .begin() and .end()
- Threads with Classes and std::packaged_task
- bind1st and bind2nd