Я кодирую физическое моделирование, и я хорошо использую два вектора из тех же элементов (homebaked struct). Существенное замедление работы моего компьютера происходит, когда я пытаюсь удалить все элементы, содержащиеся в моем vec2, из vec1 (может быть много копий каждого из этого элемента в vec2), моя текущая реализация выполняется со степенью сложности ( vec1) * size (vec2), но это похоже на то, что не так далеко от алгоритма сортировки, и я думаю, что кто-то, возможно, уже реализовал что-то намного быстрее (N.log(N)), выполнив свою работу. Слышали ли вы о каком-либо манипулировании?
Сортировка векторов сама по себе - это путь медленнее от того, что вы могли бы достичь, если элементы хешируются. Для создания хеш-таблицы из одного из векторов потребуется (N + M), а затем поиск элементов из другого в ней.
Если векторы не упорядочены, то в любом случае сложность будет равна O (m * n), где m и n - размеры векторов.
std::set_difference
должен это сделать.