web-dev-qa-db-fra.com

ajouter un ensemble à un autre ensemble

Existe-t-il une meilleure façon d'ajouter un ensemble à un autre ensemble que d'itérer à travers chaque élément?

j'ai :

set<string> foo ;
set<string> bar ;

.....

for (set<string>::const_iterator p = foo.begin( );p != foo.end( ); ++p)
    bar.insert(*p);

Existe-t-il un moyen plus efficace de procéder?

47
mr.bio

Vous pouvez insérer une plage:

bar.insert(foo.begin(), foo.end());
85
CB Bailey

Ce n'est pas un code plus efficace mais moins.

bar.insert(foo.begin(), foo.end());

Ou prenez le syndicat qui traite efficacement les doublons. (le cas échéant)

set<string> baz ;

set_union(foo.begin(), foo.end(),
      bar.begin(), bar.end(),
      inserter(baz, baz.begin()));
8
Eddy Pronk