2
A
回答
8
bind1st
結合的第一個參數(例如,您有foo(int a, int b)
,然後bind1st(foo, 1)(bar)
將相當於foo(1, bar)
),bind2nd
第二個。不要使用它們,儘管它們幾乎沒用 - 用普通的boost::bind
代替(或者在C++ 0x中爲std::bind
)。
3
假設你有一個函數對象f(x,y)
和需要只用一個變量的functoid的算法。此外,還有兩種可能:
- 設置
y
一些固定值,讓上x
- 設置
x
一些固定值的算法工作,讓上y
算法工作這就是區別。
0
這是顯而易見的。 bind1st
將值綁定到函子的第一個操作數(假設您知道C++中的函數是什麼),第二個爲bind2nd
。但是,對於可交換運營商+
(或std::plus
),它實際上沒有什麼區別(如果你沒有在該示例非交換行爲超負荷+
)。
0
bind1st結合的函數的所述第一參數而bind2nd結合第二個參數。如果像plus()函數那樣操作,它將不會產生任何影響,因爲在這兩種情況下,添加兩個數字仍然是相同的,但是如果您像minus()那樣執行操作,那麼它會根據您使用bind1st或bind2nd, 4和4-5會產生不同的結果,現在你得到了bind1st第一個參數綁定和bind2nd第二個參數綁定之間的區別。
相關問題
- 1. 如何使用bind1st和bind2nd?
- 2. 使用bind1st或bind2nd?
- 3. 問題使用bind1st和bind2nd與改造
- 4. 與bind2nd和binary_function
- 5. 功能,bind1st和mem_fun
- 6. mem_fun和bind1st問題
- 7. boost :: trim和std :: bind2nd
- 8. find_if與bind2nd和函子
- 9. bind2nd for_each循環
- 10. 如何使用binder和bind2nd函子?
- 11. 使用bind1st爲參照
- 12. 的for_each bind2nd mem_fun VS 2005
- 13. 使用std :: bind2nd與推力
- 14. 使用std :: bind2nd與引用
- 15. 使用bind1st在常量memeber功能
- 16. C++:使用mem_fn和bind1st創建一個函數對象
- 17. 使用std :: vector <T*> :: push_back與std :: mem_fun和std :: bind1st
- 18. VS2012 bind2nd不是std的成員
- 19. Bind2nd問題與用戶定義的類
- 20. 爲什麼std :: bind1st被認爲是「幾乎不可用」?
- 21. 可以用std :: bind1st將void(*)(void *,int)轉換爲void(*)(int)嗎?
- 22. 自動推斷bind1st的類型(mem_fun(&my_class :: f),this)?
- 23. 我可以使用bind1st/2nd替換boost :: bind嗎?
- 24. STL:調用bind2nd與ptr_fun的 「常量T&」 類型
- 25. C++的std :: bind2nd是否有內置的Haskell等價物?
- 26. 使用不推薦使用的綁定器和C++ 0x lambdas
- 27. std :: map find_if條件風格混淆
- 28. 通過不斷
- 29. 使用std :: logical_and來結合兩個條件
- 30. 爲什麼我不能使用函數適配器compose2?
如果你沒有C++ 0x或不想帶來提振依賴他們來很方便。 – 2011-05-24 15:11:34
他們有一元謂詞邊際使用......但同意,如果你想結合仿函數使用'提振:: function'用'提振:: bind' – AJG85 2011-05-24 15:12:22
@ChristianRau:這就是爲什麼我說「幾乎」沒有「完全」無用。雖然避免提升只是適得其反。 – 2011-05-24 15:16:25