Поведение Связанного списка C++

У меня есть некоторый код C, где там два связанных списка (скажите, что A и B), и A вставляется в особом положении в B, и тихое имеет элементы.

Как я моделирую то же поведение эффективно с помощью STL C++? Если я пробую соединение встык, оно делает второй пустым.

Спасибо, Gokul.

5
задан Peter Alexander 27 February 2010 в 23:55
поделиться

2 ответа

Вам нужно скопировать элементы. Рассмотрим что-то вроде этого:

std::copy(a.begin(), a.end(), std::inserter(b, b_iterator));

Если вы хотите, чтобы одни и те же узлы использовались в двух списках, это просто не поддерживается std :: list (контейнеры STL всегда имеют исключительное право собственности). Вы можете избежать дублирования элементов, сохранив указатели в списке или используя boost :: ptr_list , который внутренне хранит указатели, но предлагает более удобный API.

2
ответ дан 14 December 2019 в 01:06
поделиться

Попробуйте вставить:

B.insert( position, A.begin(), A.end() );

, чтобы вставить копии элементов A в B перед 'position' . Сама A остается неизменной. См. Эту ссылку

7
ответ дан 14 December 2019 в 01:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: