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