附加到另一个集合

有没有比循环遍历每个元素更好的方法来将一个集合附加到另一个集合?

我有:

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


.....


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

还有更有效的方法吗?

60559 次浏览

您可以插入一个范围:

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

它不是一个更有效但是更少的代码。

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

或者选择能有效处理复制品的工会。(如果适用)

set<string> baz ;


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