У меня есть QList<MyData>
, где MyData
есть 2 члена, int id
(уникальный) и QString name
. Я хочу удалить все повторяющиеся записи на основе name
, и эта запись должна иметь наивысшее значение id
между другими объектами, имеющими такое же name
. Любое предложение о том, как сделать это самым быстрым способом? Производительность здесь очень важный фактор.
Некоторые из моих идей после гугления в течение всего дня:
qStableSort()
он основан на идентификаторе (по убыванию), затем перебираетQList
, затем для каждой записи копирует запись в другой новыйQList
, когдаname
не существует в новомQList
- используйте
QList::toSet
(который удаляет все повторяющиеся записи) и предоставьте оператор ==() и реализацию qHash() на основеname
, но уникальная запись может не иметь самый высокий идентификатор - используйте
std::list::unique
, но я не уверен, как это работает.
std::list::unique
, либо общей функцииstd::unique
) означает, что вам необходимо скопировать данные в стандартный контейнер, а затем скопировать их обратно в файлQList
. - person Some programmer dude   schedule 14.01.2013