В Ассистанте на тему работу QList'а указано следующее:===If T is itself a pointer type or a basic type that is no larger than a pointer, or if T is one of Qt's shared classes, then QList stores the items directly in the pointer array. For lists under a thousand items, this array representation allows for very fast insertions in the middle, and it allows index-based access.===Внутри QList'а (точнее QListData) вставка не в начало или конец реализуется как вызов memmove и заполнение освободившегося места. Никак не могу понять за счет чего достигается "very fast insertions"? Для QLinekdList это понятно, четыре указателя перевести, но для листа, чья внутренняя структура так похожа на обычный вектор - непонятно.Поясните, пожалуйста в чем разница реализации QVector и QList и почему же для интегральных и QT-related типов второй оказывается быстрее первого?
|