Как уже упоминалось, std::merge
в порядке.
Только для std :: list, вы можете воспользоваться оптимизацией, которую реализует std::list::merge
функция-член : она склеивает узлы спискаиз источника в цель.Таким образом, список источников станет пустым, но это позволит избежать (пере) выделения ресурсов
Re: std::set
, на самом деле вы можете std :: merge в std :: setчтобы получить уникальные значения за один раз.При универсальном слиянии повторяющиеся значения не фильтруются, но результат сортируется , поэтому вы можете применить std::unique
к результату.Если вы ожидаете много дубликатов, вы можете быстрее использовать std::set