C++ 向量的ostream_迭代器<;int>;不编译。为什么?

C++ 向量的ostream_迭代器<;int>;不编译。为什么?,c++,vector,iterator,ostream,C++,Vector,Iterator,Ostream,请参见以下最小可复制示例: #包括 #包括 #包括 //为std::vector定义插入器运算符 std::ostream&operator第一个问题是缺少一个 #include <iterator> 然而。在任何情况下,这就是编译错误的原因:的现有重载提供了良好且可理解的解释。我仍然不满意我的问题没有一个完全合规的解决方案。因此,我将把插入器包装在一个类中,或者为提取器创建一个代理。不管怎样,+1+accept你不是说问题是因为operator@RemyLebeau你说得对。编译

请参见以下最小可复制示例:

#包括
#包括
#包括
//为std::vector定义插入器运算符

std::ostream&operator第一个问题是缺少一个

#include <iterator>

然而。在任何情况下,这就是编译错误的原因:
的现有重载提供了良好且可理解的解释。我仍然不满意我的问题没有一个完全合规的解决方案。因此,我将把插入器包装在一个类中,或者为提取器创建一个代理。不管怎样,+1+accept你不是说问题是因为
operator@RemyLebeau你说得对。编译器错误可以追溯到类
ostream\u迭代器
的赋值运算符。它发生在
*\u Myostr行中
namespace std {
    // Define inserter operator for std::vector<int>
    std::ostream& operator << (std::ostream& os, const std::vector<int>& v) {
        std::copy(v.begin(), v.end(), std::ostream_iterator<int>(os, " "));
        return os;
    }
}