From 8183086513ae439220ae1facb1e93fc23b9a116b Mon Sep 17 00:00:00 2001 From: Ole-Morten Duesund Date: Mon, 7 Dec 2020 15:47:28 +0100 Subject: Add sections about std containers and algorithms Add section comparing Qt containers and std containers. Add snippets showing use of std algorithms with Qt containers. Task-number: QTBUG-86584 Pick-to: 6.0 Change-Id: I1133a5214a5acd086c37658ca11ab205a19a489b Reviewed-by: Paul Wicking --- src/corelib/doc/src/containers.qdoc | 51 +++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'src/corelib/doc/src') diff --git a/src/corelib/doc/src/containers.qdoc b/src/corelib/doc/src/containers.qdoc index c5b70c2675..5d4b9a2215 100644 --- a/src/corelib/doc/src/containers.qdoc +++ b/src/corelib/doc/src/containers.qdoc @@ -379,6 +379,57 @@ \note The alternative macros Q_FOREACH and Q_FOREVER remain defined regardless. + \section1 Qt containers compared with std containers + + \table + \header \li Qt container \li Closest std container + + \row \li \l{QList} + \li Similar to std::vector + + \l{QList} and \l{QVector} were unified in Qt 6. Both + use the datamodel from QVector. QVector is now an alias to QList. + + This means that QList is not implemented as a linked list, so if + you need constant time insert, delete, append or prepend, + consider \c std::list. See \l{QList} for details. + + \row \li \l{QVarLengthArray} + \li Resembles a mix of std::array and std::vector. + + For performance reasons, QVarLengthArray lives on the stack unless + resized. Resizing it automatically causes it to use the heap instead. + + \row \li \l{QStack} + \li Similar to std::stack, inherits from \l{QList}. + + \row \li \l{QQueue} + \li Similar to std::queue, inherits from \l{QList}. + + \row \li \l{QSet} + \li Similar to std::set. Internally, \l{QSet} is implemented with a + \l{QHash}. + + \row \li \l{QMap} + \li Similar to std::map. + + \row \li \l{QMultiMap} + \li Similar to std::multimap. + + \row \li \l{QHash} + \li Most similar to std::map. + + \row \li \l{QMultiHash} + \li Most similar to std::multimap. + + \endtable + + \section1 Qt containers and std algorithms + + You can used Qt containers with functions from \c{#include }. + + \snippet code/doc_src_containers.cpp 26 + \section1 Other Container-Like Classes Qt includes other template classes that resemble containers in -- cgit v1.2.3