добавить набор в другой набор - PullRequest
47 голосов
/ 09 апреля 2010

Есть ли лучший способ добавить набор в другой набор, чем перебирать каждый элемент?

у меня есть:

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

.....

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

Есть ли более эффективный способ сделать это?

Ответы [ 2 ]

84 голосов
/ 09 апреля 2010

Вы можете вставить диапазон:

bar.insert(foo.begin(), foo.end());
8 голосов
/ 09 апреля 2010

Это не более эффективный, но меньший код.

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

Или возьмите союз, который эффективно обрабатывает дубликаты. (если применимо)

set<string> baz ;

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