std::vector<int> my_ints;
my_ints.push_back(1);
my_ints.push_back(2);
my_ints.push_back(3);
my_ints.push_back(4);
std::for_each(my_ints.begin(), my_ints.end(), std::cout.operator <<);
1
A
回答
15
因爲這是一個成員函數,並且for_each
需要一個帶有單個參數的函數對象。
你必須寫自己的功能:
void print_to_stdout(int i)
{
std::cout << i;
}
std::for_each(my_ints.begin(), my_ints.end(), print_to_stdout);
另一種方法是混合std::mem_fun
和std::bind1st
(或任何更好的C++ 0x /升壓替代品)來生成功能。
但是,最好的辦法是使用std::copy
與std::ostream_iterator
:
std::copy(my_ints.begin(), my_ints.end(), std::ostream_iterator<int>(std::cout));
2
的for_each接受一個函數作爲最後一個參數應用在範圍內的元素, 定義一個函數應該做的事情,你有什麼
void print(int i){
cout << i << endl;
}
然後
for_each(vector.begin(), vector.end(), print)
如果這是你正在嘗試...
3
std::for_each
需要一個函數,它有一個參數,你正在迭代的容器的元素。但是,operator <<
需要兩個參數,即運算符的左側和右側。所以事情不排隊。
您必須以某種方式綁定ostream參數,以便您再次下到單個參數。 boost::bind
是一種方法,或者您可以定義一個自定義的單個參數函數並傳遞該函數。
相關問題
- 1. 爲什麼我不能做列表<X<Long>>作爲列表的參數<X<?>>
- 2. cout << cout和cout <<&cout在C++中有什麼區別?
- 3. 爲什麼ostream :: operator <<字符參數的全局函數?
- 4. 爲什麼我不能將函數參數推入數組中?
- 5. 爲什麼我不能使用char作爲函數的參數?
- 6. 爲什麼我不能從'T'返回fmt ::參數<'a>?
- 7. 爲什麼我不能動作<Int32>動作<Object>?
- 8. 爲什麼我不能將角度變量作爲函數參數傳遞?
- 9. 爲什麼我不能將jquery對象作爲參數傳遞給函數?
- 10. 爲什麼<rich:datascroller>不能在<h:form>中工作?
- 11. cout << cout'和'cout <<&cout'在C++中的區別?
- 12. 爲什麼輸出cout << setprecision(2)<< 0.999是1而不是1.0?
- 13. C++流作爲函數參數。我可以做一些像功能(a <<「hi」<< b);
- 14. 爲什麼我不能使用BindingList <TInherited>作爲一個參數來使用BindingList的方法<T>?
- 15. 爲什麼我不能將此接口作爲參數傳遞?
- 16. 爲什麼我不能在C++中將函數評估作爲構造函數參數傳遞?
- 17. 爲什麼我不能在JQuery的事件處理函數中將「函數聲明」作爲參數傳遞?
- 18. 爲什麼不可能將常量集<Derived*>作爲常量集<Base*>傳遞給函數?
- 19. 我的<% %>不能在div中工作。爲什麼?
- 20. 我不能使用<nameofmystructure> *此作爲參數傳遞給函數
- 21. lxml將「<」轉換爲<。爲什麼?
- 22. cout << 2 [「abc」] << endl;爲什麼它工作?它的語法是什麼?
- 23. 爲cout重載'<'Operator Breaks <<?
- 24. 爲什麼我不能將Clojurescript函數作爲回調函數傳遞給Javascript?
- 25. 爲什麼我不能將HashMap <CharSequence,CharSequence>設置爲HashMap <String,String>
- 26. 爲什麼我不能使用<< 2將0xff0000轉換爲0xff000000?
- 27. 爲什麼我的重載<<不返回任何數據?
- 28. 由於cout << cin.rdbuf()導致的無限循環,爲什麼?
- 29. C++。爲什麼std :: cout << char + int打印int值?
- 30. 爲什麼我們在其他函數中調用函數作爲參數?