Я читаю учебник по С ++ 5 изд. Я читаю это так внимательно, потому что это действительно полезно. Я также слишком много практикую из того, что я узнал из этого. Сейчас я в главе 13. Переместить семантику. переместить итераторы. все ясно, пока я не дошел до этого абзаца:
Стоит отметить, что стандартная библиотека не дает никаких гарантий относительно того, какие алгоритмы могут использоваться с итераторами перемещения, а какие нет. Поскольку перемещение объекта может стереть источник, вы должны передавать итераторы перемещения в алгоритмы только в том случае, если уверены, что алгоритм не обращается к элементу после того, как он назначен этому элементу или передал этот элемент пользовательской функции.
Может кто-нибудь объяснить мне этот абзац? Я не понял, «вы должны передавать итераторы перемещения в алгоритмы только в том случае, если уверены, что алгоритм не обращается к элементу после того, как он назначен этому элементу или передал этот элемент пользовательской функции». ?? о каком элементе он говорит? Спасибо, ребята!
EG:
std::vector<int> vi{5, 7, 10, 24}, vi2;
std::copy(std::make_move_iterator(std::begin(vi)), std::make_move_iterator(std::end(vi)), std::back_inserter(vi2));
std::copy(vi2.cbegin(), vi2.cend(), std::ostream_iterator<int>(std::cout, ", "));
Означает ли это, что copy
не должен обращаться к элементам vi
?