Это не более эффективный, но меньший код.
bar.insert(foo.begin(), foo.end());
Или возьмите союз, который эффективно обрабатывает дубликаты. (если применимо)
set<string> baz ;
set_union(foo.begin(), foo.end(),
bar.begin(), bar.end(),
inserter(baz, baz.begin()));