Как добавить объект <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 ); }