将set设置为另一组

时间:2010-04-09 12:13:21

标签: c++ insert set

是否有更好的方法将一个集合附加到另一个集合而不是遍历每个元素?

我有:

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

.....

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

有更有效的方法吗?

2 个答案:

答案 0 :(得分:84)

您可以插入范围:

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

答案 1 :(得分:8)

它不是更有效但代码更少。

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

或者采取有效处理重复的工会。 (如适用)

set<string> baz ;

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