Non è questione di come è meglio fare. La questione è: hai liste di oggetti o di puntatori a oggetti?
Nel primo caso devi convertirli a puntatori (shared_ptr se possibile), nel secondo non è necessario.
Poi usi std::copy() un paio di volte per concatenare le liste.
Alla più disperata, usi un paio di for e vai di push_back().
Cosa c'è di difficile?