делая примеры из книги STL C++17 наткнулся на такой сюрприз уже не в первый раз вот иследуемый код
Код | #include <iostream> #include <string> #include <iterator> #include <sstream> #include <deque>
using namespace std;
int main() { istream_iterator<int> it_cin{ cin }; istream_iterator<int> end_cin;
deque<int> v;
//copy(it_cin, end_cin, back_inserter(v)); for (; it_cin != end_cin; ++it_cin) v.push_back(*it_cin);
istringstream sstr{ "123 456 789" }; auto deque_middle(next(begin(v), static_cast<int>(v.size()) / 2));
copy(istream_iterator<int>{sstr}, {}, inserter(v, deque_middle));
initializer_list<int> il2{ -1, -2, -3 }; copy(begin(il2), end(il2), front_inserter(v));
copy(begin(v), end(v), ostream_iterator<int>{cout, ", "}); cout << '\n'; }
|
при вставке при помощи алгоритма std::copy(it_cin, end_cin, back_inserter(v)); программа зависает. решил сделать при помощи цикла for
Код | for (; it_cin != end_cin; ++it_cin) v.push_back(*it_cin);
|
тоже виснет, но выясняются обстоятельства что когда все элементы пройдены и итератор it_cin инкрементируеться последний раз, чтобы проверить истеность и выйти из цикла, программа засыпает вот прилагаю скрин
https://savepice.ru/full/2019/11/21/ec945ea1fb37df5dc08b556067649acf-full.png.html
|