std::ostream_iterator用法

Defined in header <iterator>
    template< class T, class CharT = char, class Traits = std::char_traits<CharT>>
          class ostream_iterator : public std::iterator<std::output_iterator_tag, void, void, void, void>

std::ostream_iterator is a single-pass OutputIterator that writes successive objects of type T into thestd::basic_ostream object for which it was constructed, using operator<<. Optional delimiter string is written to the output stream after every write operation. The write operation is performed when the iterator (whether dereferenced or not) is assigned to. Incrementing the std::ostream_iterator is a no-op.

In a typical implementation, the only data members of std::ostream_iterator are a pointer to the associatedstd::basic_ostream and a pointer to the first character in the delimiter string.

When writing characters, std::ostreambuf_iterator is more efficient, since it avoids the overhead of constructing and destructing the sentry object once per character.

 1 #include <iostream>
 2 #include <sstream>
 3 #include <iterator>
 4 #include <numeric>
 5
 6 int main()
 7 {
 8     std::istringstream str("0.1 0.2 0.3 0.4");
 9     std::partial_sum(std::istream_iterator<double>(str),
10                       std::istream_iterator<double>(),
11                       std::ostream_iterator<double>(std::cout, " "));
12 }

Output:

0.1 0.3 0.6 1
 1 // ostream_iterator example
 2 #include <iostream>     // std::cout
 3 #include <iterator>     // std::ostream_iterator
 4 #include <vector>       // std::vector
 5 #include <algorithm>    // std::copy
 6
 7 int main () {
 8   std::vector<int> myvector;
 9   for (int i=1; i<10; ++i) myvector.push_back(i*10);
10
11   std::ostream_iterator<int> out_it (std::cout,", ");
12   std::copy ( myvector.begin(), myvector.end(), out_it );
13   return 0;
14 }
Output:
   10, 20, 30, 40, 50, 60, 70, 80, 90,
时间: 2024-11-03 15:21:00

std::ostream_iterator用法的相关文章

C++11 std::function用法(c++常问问题十七)

C++11 std::function用法 直接上代码: 例子1:std::function的感觉就像是函数指针那样有木有 #include <iostream> #include <functional> #include <map> using namespace std; // 普通函数 int add(int i, int j) { return i + j; } //lambda表达式 auto mod = [](int i, int j){return i

c++ std::string 用法

std::string用法总结 在平常工作中经常用到了string类,本人记忆了不好用到了的时候经常要去查询.在网上摘抄一下总结一下,为以后的查询方便: string类的构造函数: string(const char *s);    //用c字符串s初始化string(int n,char c);     //用n个字符c初始化 string类的字符操作: const char &operator[](int n)const; const char &at(int n)const; cha

c/c++ 多线程 等待一次性事件 std::promise用法

多线程 等待一次性事件 std::promise用法 背景:不是很明白,不知道为了解决什么业务场景,感觉std::async可以优雅的搞定一切的一次等待性事件,为什么还有个std::promise. 用法:和std::async一样,也能够返回std::future,通过调用get_future方法.也可以通过future得到线程的返回值. 特点: 1,是个模板类,模板类型是个方法类型,比如double(int),有一个参数,类型是int,返回值类型是double. std::promise<i

std::map用法

Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道.这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树AVL),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处. 使用map对象首先要包括头文件,包含语句中必须加入如下包含声明: #include

matlab std函数 用法及实例

MATLAB常常用到std函数来进行标准差计算,下面我就通过实例介绍一下 matlab std函数怎么用. 1. std函数是用来计算标准偏差的一个函数,由于其有不同的参数,我们就用下面的例子进行介绍: A =      1     2     3      1     1     1 标准差的两种计算公式如下: 2. std(A): std(A)函数求解的是最常见的标准差,此时除以的是N-1. 注意:此函数命令不能对矩阵求整体的标准差,只能按照行或者列进行逐个求解标准差,默认情况下是按照列.

STL C++ std::bind操作例子,仿函数操作配合算法库操作

1.stl::bind 和std::mem_fun_ref系列的配合使用出现了问题,多参形式不知道如何组织.适配器的操作真心难受!!!只能迷迷糊糊地用着.要使用非质变算法时需要作用于容器时只能考虑lambda或者transfer操作.待续 // functor-adapter_p431.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <algorithm>//元素操作算法 #include <functiona

boost.multi_array学习-子视图用法(3)

//made by davidsu33 //2014-9-14 11:51 #include "stdafx.h" #include <boost/config.hpp> #include <boost/multi_array/extent_gen.hpp> #include <boost/multi_array.hpp> #include <boost/pool/pool.hpp> #include <boost/pool/poo

C++11新特性之 std::array container

数组每个人都很熟悉,vector更是我们常常用到的. 但是某些场合,使用vector是多余的,尤其能明确元素个数的情况下,这样我们就付出了效率稍低的代价! 但是你使用数组的代价是那么的不安全,那么的不方便. 于是,C++11推出了模板类array,位于std名称控件中. 与vector不同的是,array对象的长度是固定的,使用了静态存储区,即存储在栈上,效率跟数组相同,但是更加的安全. 首先需要包含头文件array,而且语法与vector也有所不同: #include<array> ...

实战c++中的string系列--std:vector&lt;char&gt; 和std:string相互转换(vector to stringstream)

有时候也会遇到std:vector与转std:string 相互转换的情况. 首先看一下vector<char>如何转string: std::vector<char> *data = response->getResponseData(); std::string res; //方法一 for (int i = 0;i<data->size();++i) { res+=(*data)[i]; } res+='\0'; std:cout << res;