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. 为什么我们在其他函数中调用函数作为参数?