首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用for_each输出到cout?

如何使用for_each输出到cout?
EN

Stack Overflow用户
提问于 2010-11-11 17:50:07
回答 5查看 17.2K关注 0票数 19

有没有更直接的方法来做到这一点?

for_each(v_Numbers.begin(), v_Numbers.end(), bind1st(operator<<, cout));

如果可能的话,没有显式的for循环。

编辑:

如果可能,如何使用std::vectorstd::cin执行此操作?(如何只读取n元素)?

EN

回答 5

Stack Overflow用户

发布于 2010-11-11 18:00:23

另一种选择- Boost.Lambda

for_each(v.begin(), v.end(), cout << boost::lambda::_1);
票数 10
EN

Stack Overflow用户

发布于 2010-11-11 17:56:49

是的,但是你必须使用std::copy算法:

#include <iostream>
#include <iterator>
#include <vector>

int main()
{
    std::vector<int> a;
    // fill a...
    std::copy(a.begin(), a.end(), std::ostream_iterator<int>(std::cout));
}
票数 7
EN

Stack Overflow用户

发布于 2017-05-02 22:58:15

是的,使用lambda表达式( STL 11),我们可以将C++容器的每个元素内联打印到cout。

#include <iostream>   // cout
#include <vector>     // vector
#include <algorithm>  // for_each
#include <iterator>   // istream_iterator
using namespace std;

int main()
{
   std::vector<int> v(10,2);
   std::for_each(v.begin(), v.end(), [](int i)->void {std::cout << i <<endl;});
   return 0;
}

为了从cin到向量读取"n“值,

 int main()
 {
   std::vector<int> v;

   int elementsToRead;
   cin>>elementsToRead;  // Number of elements to copy

   // Reading from istream
   std::istream_iterator<int> ii2(std::cin);
   std::copy_n(ii2, elementsToRead, std::back_inserter(v));

   // printing updated vector
   std::for_each(v.begin(), v.end(), [](int i)->void {cout << i <<endl;});

   return 0;
}

(或)使用Lambda表达式

std::for_each(std::istream_iterator<int>(cin),std::istream_iterator<int>(),[&v](int i)->void { v.push_back(i);});

要了解有关Lambda expression @ What is a lambda expression in C++11?的更多信息

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4153110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档