У меня есть некоторый код C, где там два связанных списка (скажите, что A и B), и A вставляется в особом положении в B, и тихое имеет элементы.
Как я моделирую то же поведение эффективно с помощью STL C++? Если я пробую соединение встык, оно делает второй пустым.
Спасибо, Gokul.
Вам нужно скопировать элементы. Рассмотрим что-то вроде этого:
std::copy(a.begin(), a.end(), std::inserter(b, b_iterator));
Если вы хотите, чтобы одни и те же узлы использовались в двух списках, это просто не поддерживается std :: list
(контейнеры STL всегда имеют исключительное право собственности). Вы можете избежать дублирования элементов, сохранив указатели в списке или используя boost :: ptr_list
, который внутренне хранит указатели, но предлагает более удобный API.
Попробуйте вставить:
B.insert( position, A.begin(), A.end() );
, чтобы вставить копии элементов A в B перед 'position' . Сама A остается неизменной. См. Эту ссылку