Как добавить объект <T> к другому

в С++, у меня есть два объекта list<T> A и B, и я хочу добавить все члены B в конец A. Я искал несколько разных источников и не нашел простого решения (e.i. A.append(B);), и это меня немного удивляет.

Каков наилучший способ сделать это?

Как бы то ни было, после этого меня не волнует B (он удаляется в следующей строке), поэтому, если есть способ использовать это для лучшего перфоманса, я также заинтересован в этом.

Ответ 1

Если вы хотите добавить копии элементов в B, вы можете сделать:

a.insert(a.end(), b.begin(), b.end());

Если вы хотите переместить элементы B в конец A (одновременно опуская B), вы можете сделать:

a.splice(a.end(), b);

В вашей ситуации сплайсинг будет лучше, поскольку он просто включает настройку пары указателей в связанных списках.

Ответ 2

один пример с использованием boost

std::list<T> A; // object A is a list containing T structure
std::list<T> B; // object B is a list containing T structure

// append list B to list A
BOOST_FOREACH(auto &listElement, B) { A.push_back( listElement ); }