std::ostream_iterator<T,CharT,Traits>::ostream_iterator

来自cppreference.com
 
 
迭代器库
迭代器概念
迭代器原语
算法概念与工具
间接可调用概念
常用算法要求
工具
迭代器适配器
流迭代器
迭代器定制点
迭代器操作
(C++11)
(C++11)
范围访问
(C++11)(C++14)
(C++11)(C++14)
(C++17)(C++20)
(C++14)(C++14)
(C++14)(C++14)
(C++17)
(C++17)
 
 
ostream_iterator( ostream_type& stream, const CharT* delim );
(1)
ostream_iterator( ostream_type& stream );
(2)
1)stream 为关联流并以 delim 为分隔符构造迭代器。
2)stream 为关联流并以空指针为分隔符构造迭代器。

参数

stream - 此迭代器所访问的输出流
delim - 在每次输出后插入流的空终止字符串

示例

#include <iostream>
#include <iterator>
#include <algorithm>
#include <numeric>
int main()
{
    std::ostream_iterator<char> oo {std::cout};
    std::ostream_iterator<int> i1 {std::cout, ", "};
    std::fill_n(i1, 5, -1);
    *oo++ = '\n';
 
    std::ostream_iterator<double> i2 {std::cout, "; "};
    *i2++ = 3.14;
    *i2++ = 2.71;
    *oo++ = '\n';
 
    std::common_iterator<std::counted_iterator<std::ostream_iterator<float>>,
                         std::default_sentinel_t>
        first { std::counted_iterator{std::ostream_iterator<float>{std::cout," ~ "}, 5} },
        last { std::default_sentinel };
    std::iota(first, last, 2.2);
    *oo++ = '\n';
}

输出:

-1, -1, -1, -1, -1,
3.14; 2.71;
2.2 ~ 3.2 ~ 4.2 ~ 5.2 ~ 6.2 ~

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 出版时的行为 正确行为
P2325R3 C++20 由于 C++20 迭代器必须为 default_initializable 提供了默认构造函数 与该要求一同移除