【问题标题】:Can a std::back_insert_iterator be used on a std::ostream?可以在 std::ostream 上使用 std::back_insert_iterator 吗?
【发布时间】:2015-11-01 10:10:40
【问题描述】:

根据标题问题。

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

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

【问题讨论】:

    标签: c++ boost stl iterator iostream


    【解决方案1】:

    这就是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

    【讨论】:

    • 谢谢。我调整了我的函数,以便不接受std::back_insert_iterator&lt;Container&gt; 作为第四个参数(使用前一个模板参数的类型进行实例化),现在将第四个参数参数化为OutputIterator。非常感谢您的快速帮助。
    • @user1420752 如果这解决了您的问题,请点击答案左侧的复选标记接受。
    猜你喜欢
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    • 2017-05-14
    相关资源
    最近更新 更多