Быстрый (est) способ удалить все элементы вектора из другого

0

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

  • 3
    std::set_difference должен это сделать.
  • 1
    ... на отсортированных векторах.
Показать ещё 3 комментария
Теги:
sorting
vector

2 ответа

0

Сортировка векторов сама по себе - это путь медленнее от того, что вы могли бы достичь, если элементы хешируются. Для создания хеш-таблицы из одного из векторов потребуется (N + M), а затем поиск элементов из другого в ней.

0

Если векторы не упорядочены, то в любом случае сложность будет равна O (m * n), где m и n - размеры векторов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню