Скажите, у меня есть два std::set<std::string>
с.Первый, old_options
, необходимо объединить с дополнительными параметрами, содержащимися в new_options
.Я не могу просто использовать std::merge
(хорошо, но не только это), потому что я также проверяю удваивания и соответственно предупреждаю пользователя об этом.Для этого у меня есть
void merge_options( set<string> &old_options, const set<string> &new_options )
{
// find duplicates and create merged_options, a stringset containing the merged options
// handle duplicated the way I want to
// ...
old_options = merged_options;
}
. Лучше ли использовать
std::swap( merged_options, old_options );
или мое назначение?
Есть ли лучший способ отфильтровать дубликаты и вернуть объединенные set
, чем последовательные вызовы, на std::set_intersection
и std::set_union
, чтобы обнаружить дубликаты и объединить set
с?Я знаю, что он медленнее, чем один обход, и делает оба одновременно, но эти наборы малы (производительность не критична), и я доверяю Стандарту больше, чем себе.