diff options
Diffstat (limited to 'src/corelib/tools/qhash.h')
-rw-r--r-- | src/corelib/tools/qhash.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/corelib/tools/qhash.h b/src/corelib/tools/qhash.h index 98965b9121..69a8afe195 100644 --- a/src/corelib/tools/qhash.h +++ b/src/corelib/tools/qhash.h @@ -48,6 +48,10 @@ #include <QtCore/qpair.h> #include <QtCore/qrefcount.h> +#ifdef Q_COMPILER_INITIALIZER_LISTS +#include <initializer_list> +#endif + QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -285,6 +289,15 @@ class QHash public: inline QHash() : d(const_cast<QHashData *>(&QHashData::shared_null)) { } +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QHash(std::initializer_list<std::pair<Key,T> > list) + : d(const_cast<QHashData *>(&QHashData::shared_null)) + { + reserve(list.size()); + for (typename std::initializer_list<std::pair<Key,T> >::const_iterator it = list.begin(); it != list.end(); ++it) + insert(it->first, it->second); + } +#endif inline QHash(const QHash<Key, T> &other) : d(other.d) { d->ref.ref(); if (!d->sharable) detach(); } inline ~QHash() { if (!d->ref.deref()) freeData(d); } @@ -921,6 +934,14 @@ class QMultiHash : public QHash<Key, T> { public: QMultiHash() {} +#ifdef Q_COMPILER_INITIALIZER_LISTS + inline QMultiHash(std::initializer_list<std::pair<Key,T> > list) + { + this->reserve(list.size()); + for (typename std::initializer_list<std::pair<Key,T> >::const_iterator it = list.begin(); it != list.end(); ++it) + insert(it->first, it->second); + } +#endif QMultiHash(const QHash<Key, T> &other) : QHash<Key, T>(other) {} inline void swap(QMultiHash<Key, T> &other) { QHash<Key, T>::swap(other); } // prevent QMultiHash<->QHash swaps |