C++ 如何解决ostream_迭代器转换问题?

C++ 如何解决ostream_迭代器转换问题?,c++,C++,我正在研究“unique_copy(forwrdIt first,forwrdIt last,forwrdIt result)”,我试图将结果传递为:“ostream_iterator(cout)”,但它抛出了一个错误“未知参数1从“std::ostream_iterator”到“\uu gnu cxx::\uu normal_iterator>&&”。我可以做另一个向量,然后插入它的迭代器。为什么会这样 vector<int> v = {1,2,3,1,2,2,2,3,4,5,5,

我正在研究“unique_copy(forwrdIt first,forwrdIt last,forwrdIt result)”,我试图将结果传递为:“ostream_iterator(cout)”,但它抛出了一个错误“未知参数1从“std::ostream_iterator”到“\uu gnu cxx::\uu normal_iterator>&&”。我可以做另一个向量,然后插入它的迭代器。为什么会这样

vector<int> v = {1,2,3,1,2,2,2,3,4,5,5,5,6,7,7,8,1,1};
vector<int>::iterator ip;
    ip = unique_copy(v.begin(), v.end(), ostream_iterator<int>(cout, ","));

我可以生成另一个向量,然后插入它的begin()迭代器。为什么会这样

vector<int> v = {1,2,3,1,2,2,2,3,4,5,5,5,6,7,7,8,1,1};
vector<int>::iterator ip;
    ip = unique_copy(v.begin(), v.end(), ostream_iterator<int>(cout, ","));

向量v={1,2,3,1,2,2,3,4,5,5,5,6,7,8,1,1}; 向量::迭代器ip; ip=unique_copy(v.begin()、v.end()、ostream_迭代器(cout,“,”);
1 2 3 1 2 3 4 5 6 7 8 1

如果查看算法的文档,它会显示函数返回类型与目标迭代器类型相同

算法目标是
std::ostream\u迭代器
,您试图将返回的迭代器分配给
std::vector::迭代器
。错误是由于类型不匹配造成的

如果删除赋值并只调用算法,代码将编译

vector<int> v = {1,2,3,1,2,2,2,3,4,5,5,5,6,7,7,8,1,1};
unique_copy(v.begin(), v.end(), ostream_iterator<int>(cout, ","));
向量v={1,2,3,1,2,2,3,4,5,5,5,6,7,8,1,1}; 唯一拷贝(v.begin(),v.end(),ostream_迭代器(cout,“,”);