gpt4 book ai didi

c++ - 在 std::copy 中推进列表迭代器时出错

转载 作者:太空宇宙 更新时间:2023-11-04 15:16:03 25 4
gpt4 key购买 nike

#include <iostream>
#include <list>
#include <algorithm>
#include <iterator>
using std::list;
using std::endl;
using std::cout;
using std::iterator;
int main()
{
list<int> list_int{ 0,1,2,3,4,5,6,7,8,9 };
list<int> list_int2;

copy(list_int.crbegin()+3 , list_int.crbegin()+8,back_inserter(list_int2));
for (auto &ele : list_int2)
cout << ele << endl;

return 0;
}

有什么问题吗?我很困惑。我认为错误是关于复制功能。

错误:

enter image description here

最佳答案

您无法推进列表 iterator (双向非随机)通过增加一个以上。换句话说,只有 operator++operator-- 是为双向迭代器定义的。使用 std::next相反,

copy(std::next(list_int.crbegin(), 3), 
std::next(list_int.crbegin(), 8),
back_inserter(list_int2));

std::nexttag-dispatch到正确的内部迭代器函数,该函数实际上将迭代器一个一个地重复递增。

关于c++ - 在 std::copy 中推进列表迭代器时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33083835/

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