【问题标题】:How to fix ostream_iterator conversion problem?如何解决 ostream_iterator 转换问题?
【发布时间】:2019-08-18 00:54:14
【问题描述】:

我正在研究“unique_copy(forwrdIt first,forwrdIt last,forwrdIt result)”,我尝试将结果传递为:“ostream_iterator(cout, "")”,但它抛出错误“no known conversion for argument 1 from” std::ostream_iterator' 到 '__gnu_cxx::__normal_iterator >&&'。我可以制作另一个向量,然后我可以插入它的迭代器。为什么这样?

我可以创建另一个向量,然后我可以插入它的 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, ","));

1 2 3 1 2 3 4 5 6 7 8 1

【问题讨论】:

    标签: c++


    【解决方案1】:

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

    算法目标是std::ostream_iterator&lt;int&gt;,您正在尝试将返回的迭代器分配给std::vector&lt;int&gt;::iterator。错误是由于类型不匹配造成的。

    如果您删除分配并仅调用算法,代码将编译。

    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, ","));
    

    【讨论】:

      猜你喜欢
      • 2012-03-30
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多