可以在std :: ostream上使用std :: back_insert_iterator吗?

mag*_*nus 3 c++ boost iterator iostream stl

根据标题问题.

我假设答案是"不,因为std::back_insert_iterator对象调用push_back()容器."

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

Pio*_*cki 5

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));
}
Run Code Online (Sandbox Code Playgroud)

DEMO