gpt4 book ai didi

c++ - 如何解决 ostream_iterator 转换问题?

转载 作者:搜寻专家 更新时间:2023-10-31 01:24:52 34 4
gpt4 key购买 nike

我正在研究'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 >&&'。我可以制作另一个 vector ,然后我可以插入它的迭代器。为什么这样?

我可以制作另一个 vector ,然后我可以插入它的 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

最佳答案

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

算法目标是 std::ostream_iterator<int>并且您正在尝试将返回的迭代器分配给 std::vector<int>::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, ","));

关于c++ - 如何解决 ostream_iterator 转换问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57537828/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com