[Development] QList

Marc Mutz marc.mutz at kdab.com
Wed Apr 26 07:02:49 CEST 2017


On 2017-04-25 23:04, Thiago Macieira wrote:
> On Tuesday, 25 April 2017 17:49:16 -03 Alejandro Exojo wrote:
>> On Tuesday 25 April 2017 16:35:01 Thiago Macieira wrote:
>> > QVector and QList don't have the same API. They're slightly different.
>> > What'sm  ore, QList has a beginning-of-list optimisation, whereas QVector
>> > doesn't (not even my copy, I stopped development shortly before I got to
>> > that part, even if I did add a QArrayData::GrowsBackward flag to support
>> > the case).
>> >
>> >  (...)
>> >
>> > So, no, we can't implement that in Qt 5. In Qt 6, we've already agreed we
>> > don't want this mess, so QList as it is simply goes away.
>> 
>> By the way, which is the exit strategy for QQueue?
> 
> Do we need one?
> 
> The only reason that QQueue uses QList is because QList has that 
> takeFirst()
> optimisation, while QVector does not. Once we implement that for 
> QVector, we
> should be able to use QQueue with QVector too.

FWIW: I'm against adding even more pessimising goodies to QVector. An 
area for push_front is such a goodie. The addition this causes is 
probably the reason why a QList, even for optimal payloads, is 
outperformed by QVector in my well-known benchmark from -Wmarc. Users 
that need a queue can use std::deque. If you don't iterate over it, it's 
a more than acceptable container.

Thanks,
Marc



More information about the Development mailing list