c++ - std::back_insert_iterator 可以用在 std::ostream 上吗?

标签 c++ boost stl iterator iostream

根据标题问题。

我假设答案是“否,因为 std::back_insert_iterator 对象在容器上调用 push_back()。”

如果答案实际上是否定的,那么我可以在我的模板函数中使用任何模板类迭代器来追加到 std::string 吗? , 附加到 std::vector<char> , 并写入 std::ostream

最佳答案

这就是std::ostream_iterator用于:

#include <iostream>
#include <string>
#include <vector>
#include <iterator>
#include <algorithm>

int main()
{
    char c[] = { 'a', 'b', 'c', 'd' };

    std::vector<char> v;
    std::string s;

    std::copy(c, c+4, std::back_inserter(v));
    std::copy(c, c+4, std::back_inserter(s));
    std::copy(c, c+4, std::ostream_iterator<char>(std::cout));
}

DEMO

关于c++ - std::back_insert_iterator 可以用在 std::ostream 上吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31903575/

相关文章:

c++ - 为什么我的复制构造函数被删除了?

c++ - 输入数字时出现循环错误

c++ - 如何在C++中实现一个唯一id的队列,其中元素可以是 "bumped"到顶部?

c++ - 用 STL 维护最小堆的简单方法?

c++ - ublas vector 指针

c++ - 如何在 map 的前 3 个值上使用 std::accumulate

C++ - 检测越界访问

c++ - 在 C++ 中使用友元函数进行运算符重载

c++ - 将 boost::lambda 或 boost::phoenix 与 std::find_if 一起使用

boost::program_options :当属于命名空间时如何声明和验证我自己的选项类型?