Хочу воспользоваться методом assign(iterBegin, iterEnd), но не получается, потому что почему-то к итератору не прибавляется единица.
forward_list<int> list9 = {465, -54, 0, 456};
forward_list<int> value = {464, -962, -30, -465};
forward_list<int>::iterator begin = value.begin() + 1;
forward_list<int>::iterator end = value.end();
list9.assign(begin, end);
cout << "List9 = ";
for(forward_list<int>::iterator iter = list9.begin(); iter != list9.end() ;iter++)
cout << *iter << "\t";
cout << endl;
/usr/include/c++/10/bits/basic_string.h:6161:5: note: template argument deduction/substitution failed:
ForwardList.cpp:76:54: note: ‘std::forward_list<int>::iterator’ {aka ‘std::_Fwd_list_base<int, std::allocator<int> >::iterator’} is not derived from ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>’
76 | forward_list<int>::iterator begin = value.begin() + 1;
| ^
Почему там написано, что не является производным к char, если итератор int?
Но вот если инкрементировать, то всё работает нормально. К итератору ведь можно прибавлять числа, это операция должна ведь возвратить итератор, указывающий на позицию в контейнере правее на один.
forward_list<int> list9 = {-964, 132, 30, -566};
forward_list<int> value = {464, -962, -30, -465};
forward_list<int>::iterator begin = ++value.begin();
forward_list<int>::iterator end = value.end();
list9.assign(begin, end);
cout << "List9 = ";
for(forward_list<int>::iterator iter = list9.begin(); iter != list9.end() ;iter++)
cout << *iter << "\t";
cout << endl;
вывод
List9 = -962 -30 -465