Ну для начала: маленький lifehack:
| Код | QString str = QLatin1String("строка"); // ... for(...) vect.append(str); // добавление будет многим быстрее за счёт того, что каждый раз не будет копироваться строка.
|
Далее. Почему ты решил, что медленное именно удаление? Ты же замеряешь время не только удаления, но и добавления... Далее. Сама по себе очистка вектора - операция со сложностью O(N * O(~T())), т.е. если деструктор имеет сложность O(1), то сложность становится O(N) - это достаточно быстро(быстрее просто не возможно - объекты в любом случае уничтожать придётся). А что касается удаления поэлементо(по одному за раз) - у этой операции сложность тоже O(N) потому что вектор гарантирует data contiguity, т.е. если ты удалешь элемент из начала вектора, ему придётся переместить все N-1 элементов "влево". Если нужно быстрое поэлементное удаление, то используй именно список(как ты обозвал вектор в своём сообщении ), т.е. QList(или QDeque). |