![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
RazrFalcon |
![]()
Сообщение
#1
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Как быстрее всего удалить дубликаты в QList<QPoint>? Может содержать до 100'000 элементов.
Пробовал перед добавлением в list делать проверку list.contains() - но это очень долго выходит. И чем больше список, тем дольше. Если если другой способ хранить 2-е точки в списке - с удовольствием выслушаю. |
|
|
Алексей1153 |
![]()
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
std::set<QPoint> - будет хранить точки без повторения и в отсортированном порядке (согласно оператору <, который придётся определить в субклассе). При попытке добавления повторной точки, новая точка заменит старую (в данном случае ничего не изменится)
std::multiset<QPoint> - всё то же самое, только повторные будут идти друг за другом в списке субкласс примерно такой
|
|
|
RazrFalcon |
![]()
Сообщение
#3
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Хм, по сути та же проверка наличия, только чуть быстрее и на std?
И вроде так же можно через QSet сделать, но по дефолту он не хавает QPoint. |
|
|
Алексей1153 |
![]()
Сообщение
#4
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 27.2.2025, 6:58 |