добавьте набор к другому набору

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

я имею:

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

.....

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

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

48
задан Péter Török 9 April 2010 в 01:16
поделиться

2 ответа

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

bar.insert(foo.begin(), foo.end());
89
ответ дан 7 November 2019 в 12:25
поделиться

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

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

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

set<string> baz ;

set_union(foo.begin(), foo.end(),
      bar.begin(), bar.end(),
      inserter(baz, baz.begin()));
9
ответ дан 7 November 2019 в 12:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: