0xd34df00d 29.09.2012 16:15 Azoth_primary

Почему кути такое дельфятное? Почему они не пишут оценку сложности для QList::removeDuplicates()? Хотя, слова «The entries do not have to be sorted. They will retain their original order.» навевают мысли о худшем^W квадратичной сложности.
Днища.

Recommended by:

@pooq: моча съела говно

1. Crazy_Owl 29.09.2012 16:16 Azatoth

ОШИБКА SIGSEGV ЭТО ЖЕ ОЧЕВИДНО КАК ЕЕ РЕШИТЬ

2. 0xd34df00dCrazy_Owl /1 29.09.2012 16:19 Azoth_primary

Да ты поехавший какой-то.

4. Crazy_Owl0xd34df00d /2 29.09.2012 16:21 Azatoth

как будто что-то плохое

5. 0xd34df00dCrazy_Owl /4 29.09.2012 16:22 Azoth_primary

Да не, каждый из нас немного поехал в душе.

6. DZhon 29.09.2012 16:32

int QtPrivate::QStringList_removeDuplicates(QStringList *that)
{
int n = that→size();
int j = 0;
QSet<QString> seen;
seen.reserve(n);
for (int i = 0; i < n; ++i) {
const QString &s = that→at(i);
if (seen.contains(s))
continue;
seen.insert(s);
if (j != i)
(*that)[j] = s;
++j;
}
if (n != j)
that→erase(that→begin() + j, that→end());
return n — j;
}

З.Ы. Это не QList, а QStringList.

7. 0xd34df00dDZhon /6 29.09.2012 16:36 Azoth_primary

А, ну смысл тот же.
Что-то в райне O(n²) в худшем случае, O(n) амортизированно. Это ок.

8. DZhon0xd34df00d /7 29.09.2012 16:44

Угу, и O(n) памяти.

9. 0xd34df00dDZhon /8 29.09.2012 16:49 Azoth_primary

Да, что тоже несколько удручает. Тот же std::unique вообще инплейс.

10. DZhon0xd34df00d /9 29.09.2012 17:30

Ну так и вызови его, зачем тебе этот Qt ?

11. 0xd34df00dDZhon /10 29.09.2012 17:33 Azoth_primary

Потому что strings.removeDuplicates() писать быстрее, чем strings.erase (std::unique (strings.begin (), strings.end ()), strings.end ());

12. DZhon0xd34df00d /11 29.09.2012 18:21

Зато детерминированность
!

Кстати, Qt-шные контейнеры не умеют в erase по рейнджу. Ну и создаваться из рейнджа не умеют. Нахуй их.

Do you really want to delete ?