Как правильно обрезать / изменить размер QList <> - PullRequest
0 голосов
/ 21 ноября 2019

После прочтения ряда вопросов, таких как Почему в QList нет метода resize ()? , мне интересно следующее:

Обычно в коде STLЯ мог бы иметь что-то вроде этого, чтобы ограничить размер обрабатываемой results:

std::list<int> results = something()
results.resize(std::min(result.size(), 5000));

Теперь у меня есть проект Qt с QList:

QList<int> results = something()
while(results.size() > 5000) {
    results.removeLast();
}
expensiveOperation(results);

Это действительно лучший способк этому с контейнерами Qt a QList? Причина в том, что мне нужно передать это в конце концов фреймворковой функции, ожидающей QList.

1 Ответ

0 голосов
/ 21 ноября 2019

QList! = std::list. Есть QLinkedList, который больше похож на стандартный. версия. Для большинства операций QVector предпочтительнее, чем QList в качестве типа контейнера для использования в Qt. Прочитайте https://marcmutz.wordpress.com/effective-qt/containers/ для полного объяснения.

Если вы застряли с QList по какой-то причине ... тогда да ... :( Это может быть быстреечтобы получить новый список с QList::mid(). И всегда есть QList::toVector() или toStdList().:)

...