Ответ 1
Вам нужно скопировать элементы. Рассмотрим что-то вроде этого:
std::copy(a.begin(), a.end(), std::inserter(b, b_iterator));
Если вам нужны одни и те же узлы, разделенные двумя списками, это просто не поддерживается std::list
(контейнеры STL всегда имеют эксклюзивное право собственности). Вы можете избежать дублирования элементов путем хранения указателей в списке или с помощью boost::ptr_list
, который внутренне хранит указатели, но предлагает более удобный API.