There is no reason except for "nobody implemented them so far", as the Qt Project doesn't have an infinite development bandwidth.
Speaking of such missing features, you could say the same for:
- the fact that you can't store move-only types in Qt containers due to implicit sharing;
- the lack emplacement functions (and their upcoming try versions for associative containers);
- the lack of rvalue-overloaded functions (no
QList::push_back(T &&)
);
QList
having no equivalent in the STL and being a very strange monster with serious performance issues. It is now acknowledged that it should have never been made the "good generic container" used everywhere in Qt;
- no exception safety guarantees whatsoever;
and so on.
There's lots of discussion going on these days (f.i. see this thread) about the poor state of Qt containers when compared to the STL ones, to the point that we're starting using STL containers in Qt's own implementation.
Unless you have specific reasons for using the Qt ones (say, you need to pass them to Qt-ish APIs, or you like/need implicit sharing, etc.), these days STL containers are way better than Qt ones.
Update: QList in Qt 6 is going to be a proper vector, and QVector (In Qt 6) will be an alias to QList. Some of the remarks above will not apply any more. I'm not modifying the rest of the answer as that still applies to Qt 5.15.