亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? qmap.h

?? QT 開發環境里面一個很重要的文件
?? H
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************************************** Copyright (C) 1992-2006 Trolltech ASA. All rights reserved.**** This file is part of the QtCore module of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#ifndef QMAP_H#define QMAP_H#include <QtCore/qatomic.h>#include <QtCore/qiterator.h>#include <QtCore/qlist.h>#ifndef QT_NO_STL#include <map>#endif#include <new>#undef QT_MAP_DEBUGQT_BEGIN_HEADERQT_MODULE(Core)struct Q_CORE_EXPORT QMapData{    struct Node {        Node *backward;        Node *forward[1];    };    enum { LastLevel = 11, Sparseness = 3 };    QMapData *backward;    QMapData *forward[QMapData::LastLevel + 1];    QBasicAtomic ref;    int topLevel;    int size;    uint randomBits;    uint insertInOrder : 1;    uint sharable : 1;    static QMapData *createData();    void continueFreeData(int offset);    Node *node_create(Node *update[], int offset);    void node_delete(Node *update[], int offset, Node *node);#ifdef QT_QMAP_DEBUG    uint adjust_ptr(Node *node);    void dump();#endif    static QMapData shared_null;};/*    QMap uses qMapLessThanKey() to compare keys. The default    implementation uses operator<(). For pointer types,    qMapLessThanKey() casts the pointers to integers before it    compares them, because operator<() is undefined on pointers    that come from different memory blocks. (In practice, this    is only a problem when running a program such as    BoundsChecker.)*/template <class Key> inline bool qMapLessThanKey(const Key &key1, const Key &key2){    return key1 < key2;}#ifndef QT_NO_PARTIAL_TEMPLATE_SPECIALIZATIONtemplate <class Ptr> inline bool qMapLessThanKey(Ptr *key1, Ptr *key2){    Q_ASSERT(sizeof(ulong) == sizeof(Ptr *));    return reinterpret_cast<ulong>(key1) < reinterpret_cast<ulong>(key2);}template <class Ptr> inline bool qMapLessThanKey(const Ptr *key1, const Ptr *key2){    Q_ASSERT(sizeof(ulong) == sizeof(const Ptr *));    return reinterpret_cast<ulong>(key1) < reinterpret_cast<ulong>(key2);}#endif // QT_NO_PARTIAL_TEMPLATE_SPECIALIZATION#if !defined(QT_NO_DATASTREAM)class QDataStream;template <class Key, class T> class QMap;template <class aKey, class aT>QDataStream &operator>>(QDataStream &in, QMap<aKey, aT> &map);#endiftemplate <class Key, class T>class QMap{    struct Node {        Key key;        T value;        QMapData::Node *backward;        QMapData::Node *forward[1];    };    union {        QMapData *d;        QMapData::Node *e;    };    struct PayloadNode    {        Key key;        T value;        QMapData::Node *backward;    };    static inline int payload() { return sizeof(PayloadNode) - sizeof(QMapData::Node *); }    static inline Node *concrete(QMapData::Node *node) {        return reinterpret_cast<Node *>(reinterpret_cast<char *>(node) - payload());    }public:    inline QMap() : d(&QMapData::shared_null) { d->ref.ref(); }    inline QMap(const QMap<Key, T> &other) : d(other.d)    { d->ref.ref(); if (!d->sharable) detach(); }    inline ~QMap() { if (!d) return; if (!d->ref.deref()) freeData(d); }    QMap<Key, T> &operator=(const QMap<Key, T> &other);#ifndef QT_NO_STL    explicit QMap(const typename std::map<Key, T> &other);    std::map<Key, T> toStdMap() const;#endif    bool operator==(const QMap<Key, T> &other) const;    inline bool operator!=(const QMap<Key, T> &other) const { return !(*this == other); }    inline int size() const { return d->size; }    inline bool isEmpty() const { return d->size == 0; }    inline void detach() { if (d->ref != 1) detach_helper(); }    inline bool isDetached() const { return d->ref == 1; }    inline void setSharable(bool sharable) { if (!sharable) detach(); d->sharable = sharable; }    void clear();    int remove(const Key &key);    T take(const Key &key);    bool contains(const Key &key) const;    const Key key(const T &value) const;    const T value(const Key &key) const;    const T value(const Key &key, const T &defaultValue) const;    T &operator[](const Key &key);    const T operator[](const Key &key) const;    QList<Key> uniqueKeys() const;    QList<Key> keys() const;    QList<Key> keys(const T &value) const;    QList<T> values() const;    QList<T> values(const Key &key) const;    int count(const Key &key) const;    class const_iterator;    class iterator    {        QMapData::Node *i;    public:        typedef std::bidirectional_iterator_tag iterator_category;        typedef ptrdiff_t difference_type;        typedef T value_type;        typedef T *pointer;        typedef T &reference;        // ### Qt 5: get rid of 'operator Node *'        inline operator QMapData::Node *() const { return i; }        inline iterator() : i(0) { }        inline iterator(QMapData::Node *node) : i(node) { }        inline const Key &key() const { return concrete(i)->key; }        inline T &value() const { return concrete(i)->value; }#ifdef QT3_SUPPORT        inline QT3_SUPPORT T &data() const { return concrete(i)->value; }#endif        inline T &operator*() const { return concrete(i)->value; }        inline T *operator->() const { return &concrete(i)->value; }        inline bool operator==(const iterator &o) const { return i == o.i; }        inline bool operator!=(const iterator &o) const { return i != o.i; }        inline iterator &operator++() {            i = i->forward[0];            return *this;        }        inline iterator operator++(int) {            iterator r = *this;            i = i->forward[0];            return r;        }        inline iterator &operator--() {            i = i->backward;            return *this;        }        inline iterator operator--(int) {            iterator r = *this;            i = i->backward;            return r;        }        inline iterator operator+(int j) const        { iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; }        inline iterator operator-(int j) const { return operator+(-j); }        inline iterator &operator+=(int j) { return *this = *this + j; }        inline iterator &operator-=(int j) { return *this = *this - j; }        // ### Qt 5: not sure this is necessary anymore#ifdef QT_STRICT_ITERATORS    private:#else    public:#endif        inline bool operator==(const const_iterator &o) const            { return i == reinterpret_cast<const iterator &>(o).i; }        inline bool operator!=(const const_iterator &o) const            { return i != reinterpret_cast<const iterator &>(o).i; }    private:        // ### Qt 5: remove        inline operator bool() const { return false; }    };    friend class iterator;    class const_iterator    {        QMapData::Node *i;    public:        typedef std::bidirectional_iterator_tag iterator_category;        typedef ptrdiff_t difference_type;        typedef T value_type;        typedef const T *pointer;        typedef const T &reference;        // ### Qt 5: get rid of 'operator Node *'        inline operator QMapData::Node *() const { return i; }        inline const_iterator() : i(0) { }        inline const_iterator(QMapData::Node *node) : i(node) { }#ifdef QT_STRICT_ITERATORS        explicit inline const_iterator(const iterator &o)#else        inline const_iterator(const iterator &o)#endif        { i = reinterpret_cast<const const_iterator &>(o).i; }        inline const Key &key() const { return concrete(i)->key; }        inline const T &value() const { return concrete(i)->value; }#ifdef QT3_SUPPORT        inline QT3_SUPPORT const T &data() const { return concrete(i)->value; }#endif        inline const T &operator*() const { return concrete(i)->value; }        inline const T *operator->() const { return &concrete(i)->value; }        inline bool operator==(const const_iterator &o) const { return i == o.i; }        inline bool operator!=(const const_iterator &o) const { return i != o.i; }        inline const_iterator &operator++() {            i = i->forward[0];            return *this;        }        inline const_iterator operator++(int) {            const_iterator r = *this;            i = i->forward[0];            return r;        }        inline const_iterator &operator--() {            i = i->backward;            return *this;        }        inline const_iterator operator--(int) {            const_iterator r = *this;            i = i->backward;            return r;        }        inline const_iterator operator+(int j) const        { const_iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; }        inline const_iterator operator-(int j) const { return operator+(-j); }        inline const_iterator &operator+=(int j) { return *this = *this + j; }        inline const_iterator &operator-=(int j) { return *this = *this - j; }        // ### Qt 5: not sure this is necessary anymore#ifdef QT_STRICT_ITERATORS    private:        inline bool operator==(const iterator &o) { return operator==(const_iterator(o)); }        inline bool operator!=(const iterator &o) { return operator!=(const_iterator(o)); }#endif    private:        // ### Qt 5: remove        inline operator bool() const { return false; }    };    friend class const_iterator;    // STL style    inline iterator begin() { detach(); return iterator(e->forward[0]); }    inline const_iterator begin() const { return const_iterator(e->forward[0]); }    inline const_iterator constBegin() const { return const_iterator(e->forward[0]); }    inline iterator end() {        detach();        return iterator(e);    }    inline const_iterator end() const { return const_iterator(e); }    inline const_iterator constEnd() const { return const_iterator(e); }    iterator erase(iterator it);#ifdef QT3_SUPPORT    inline QT3_SUPPORT iterator remove(iterator it) { return erase(it); }    inline QT3_SUPPORT void erase(const Key &key) { remove(key); }#endif    // more Qt    typedef iterator Iterator;    typedef const_iterator ConstIterator;    inline int count() const { return d->size; }    iterator find(const Key &key);    const_iterator find(const Key &key) const;    const_iterator constFind(const Key &key) const;    iterator lowerBound(const Key &key);    const_iterator lowerBound(const Key &key) const;    iterator upperBound(const Key &key);    const_iterator upperBound(const Key &key) const;    iterator insert(const Key &key, const T &value);#ifdef QT3_SUPPORT    QT3_SUPPORT iterator insert(const Key &key, const T &value, bool overwrite);#endif    iterator insertMulti(const Key &key, const T &value);#ifdef QT3_SUPPORT    inline QT3_SUPPORT iterator replace(const Key &key, const T &value) { return insert(key, value); }#endif    QMap<Key, T> &unite(const QMap<Key, T> &other);    // STL compatibility    typedef Key key_type;    typedef T mapped_type;    typedef ptrdiff_t difference_type;    typedef int size_type;    inline bool empty() const { return isEmpty(); }#ifdef QT_QMAP_DEBUG    inline void dump() const { d->dump(); }#endifprivate:    void detach_helper();    void freeData(QMapData *d);    QMapData::Node *findNode(const Key &key) const;    QMapData::Node *mutableFindNode(QMapData::Node *update[], const Key &key) const;    QMapData::Node *node_create(QMapData *d, QMapData::Node *update[], const Key &key,                                const T &value);#if !defined(QT_NO_DATASTREAM)#if !defined(Q_CC_BOR)#if defined Q_CC_MSVC && _MSC_VER < 1300    friend QDataStream &operator>> (QDataStream &in, QMap &map);#else    template <class aKey, class aT>    friend QDataStream &operator>> (QDataStream &in, QMap<aKey, aT> &map);#endif#endif#endif};template <class Key, class T>Q_INLINE_TEMPLATE QMap<Key, T> &QMap<Key, T>::operator=(const QMap<Key, T> &other){    if (d != other.d) {        QMapData *x = other.d;        x->ref.ref();        x = qAtomicSetPtr(&d, x);        if (!x->ref.deref())            freeData(x);        if (!d->sharable)            detach_helper();    }    return *this;}template <class Key, class T>Q_INLINE_TEMPLATE void QMap<Key, T>::clear(){    *this = QMap<Key, T>();}template <class Key, class T>Q_INLINE_TEMPLATE typename QMapData::Node *QMap<Key, T>::node_create(QMapData *adt, QMapData::Node *aupdate[], const Key &akey, const T &avalue){    QMapData::Node *abstractNode = adt->node_create(aupdate, payload());    Node *concreteNode = concrete(abstractNode);    new (&concreteNode->key) Key(akey);    new (&concreteNode->value) T(avalue);    return abstractNode;}template <class Key, class T>Q_INLINE_TEMPLATE QMapData::Node *QMap<Key, T>::findNode(const Key &akey) const{    QMapData::Node *cur = e;    QMapData::Node *next = e;    for (int i = d->topLevel; i >= 0; i--) {        while ((next = cur->forward[i]) != e && qMapLessThanKey<Key>(concrete(next)->key, akey))            cur = next;    }    if (next != e && !qMapLessThanKey<Key>(akey, concrete(next)->key)) {        return next;    } else {        return e;    }}template <class Key, class T>Q_INLINE_TEMPLATE const T QMap<Key, T>::value(const Key &akey) const{    QMapData::Node *node = findNode(akey);    if (node == e) {        return T();    } else {        return concrete(node)->value;    }}template <class Key, class T>Q_INLINE_TEMPLATE const T QMap<Key, T>::value(const Key &akey, const T &adefaultValue) const{    QMapData::Node *node = findNode(akey);    if (node == e) {        return adefaultValue;    } else {        return concrete(node)->value;    }}template <class Key, class T>Q_INLINE_TEMPLATE const T QMap<Key, T>::operator[](const Key &akey) const{    return value(akey);}template <class Key, class T>Q_INLINE_TEMPLATE T &QMap<Key, T>::operator[](const Key &akey)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲综合色| 一区二区三区在线视频免费| 精品久久国产老人久久综合| 久久综合av免费| 综合欧美一区二区三区| 亚洲成a天堂v人片| 精品一区二区三区不卡 | 亚洲精品老司机| 偷拍自拍另类欧美| 国产一区二区三区美女| 色天天综合色天天久久| 日韩一区二区不卡| 中文字幕日本不卡| 日日夜夜精品视频免费| 成人黄色片在线观看| 精品视频1区2区3区| 国产亚洲精品中文字幕| 一区二区三区毛片| 成人性色生活片| 欧美一二三四在线| 亚洲九九爱视频| 亚洲va中文字幕| 91视频观看免费| 欧美xingq一区二区| 亚洲欧美偷拍三级| 国产麻豆9l精品三级站| 777午夜精品免费视频| 日本一区二区三区国色天香 | 天堂av在线一区| www.日韩精品| 久久久噜噜噜久久中文字幕色伊伊 | 久草在线在线精品观看| av亚洲精华国产精华| 欧美不卡激情三级在线观看| 亚洲影院在线观看| www.亚洲免费av| 国产农村妇女毛片精品久久麻豆| 亚洲成人免费看| 欧洲在线/亚洲| 亚洲伦理在线免费看| 国产麻豆精品95视频| 精品成人私密视频| 婷婷成人激情在线网| 92精品国产成人观看免费| 国产亚洲综合色| 美女视频黄久久| 日韩欧美一区在线| 蜜桃视频一区二区三区在线观看| 91精品91久久久中77777| 国产精品久久久久久久第一福利 | 亚洲欧洲精品一区二区三区| 国产一区二区精品久久91| 欧美伦理影视网| 婷婷综合五月天| 8x8x8国产精品| 日韩av一二三| 色老综合老女人久久久| 亚洲自拍欧美精品| 欧美少妇xxx| 亚洲一二三区不卡| 欧美日韩三级一区| 青椒成人免费视频| 欧美伦理视频网站| 美女国产一区二区三区| 欧美xxxxxxxxx| 成人av影院在线| 国产视频不卡一区| 99re8在线精品视频免费播放| 中文字幕日韩精品一区| 一本久久精品一区二区| 亚洲大片免费看| 色综合中文综合网| 91美女福利视频| 亚洲国产一区二区三区| 欧美视频你懂的| 精品一区精品二区高清| 日韩免费在线观看| 国产激情一区二区三区四区 | 欧美日韩亚洲另类| 日韩成人伦理电影在线观看| 精品国产百合女同互慰| 成人激情小说网站| 亚洲日本电影在线| 91精品久久久久久久99蜜桃| 黄色资源网久久资源365| 国产精品福利一区二区三区| 成人精品视频网站| 午夜激情一区二区三区| 91精品久久久久久久久99蜜臂| 国产福利91精品一区| 亚洲综合视频网| 久久久激情视频| 欧美三级电影网站| 99热99精品| 欧美aa在线视频| 亚洲欧美另类综合偷拍| 日韩丝袜美女视频| 色婷婷亚洲精品| 青青草成人在线观看| 无码av中文一区二区三区桃花岛| 亚洲国产成人私人影院tom| 欧美久久久影院| 99久久婷婷国产| 激情偷乱视频一区二区三区| 一区二区三区免费网站| 最新久久zyz资源站| 精品国精品国产| 欧美裸体一区二区三区| 99精品黄色片免费大全| 国产成人自拍在线| 蜜臀av一区二区在线免费观看 | 久久精品国产77777蜜臀| 亚洲精品国产无套在线观| 欧美精品一区二区三区蜜臀| 宅男在线国产精品| 欧美在线一区二区三区| 风间由美一区二区av101| 精品综合久久久久久8888| 亚洲第一成年网| 亚洲国产精品一区二区www在线 | 在线观看日韩一区| www.亚洲免费av| 成人激情综合网站| 99re这里都是精品| 99国产欧美另类久久久精品| 国产91清纯白嫩初高中在线观看 | 亚洲午夜国产一区99re久久| 亚洲人成电影网站色mp4| 欧美国产日韩亚洲一区| 日韩欧美一区电影| 国产午夜精品一区二区三区嫩草| 精品久久久久久久久久久久久久久| 欧美日韩1234| 91超碰这里只有精品国产| 欧美午夜不卡视频| 欧美精品在线观看播放| 日韩久久精品一区| 精品成人佐山爱一区二区| 精品播放一区二区| 久久五月婷婷丁香社区| 亚洲精品在线观| 久久久亚洲精品一区二区三区| 综合在线观看色| 亚洲精品欧美激情| 亚洲gay无套男同| 青青草国产成人99久久| 久久福利视频一区二区| 久久99精品国产.久久久久久 | 欧美一区二区视频在线观看2022| 色94色欧美sute亚洲线路一ni | 韩国欧美国产1区| 极品少妇xxxx精品少妇偷拍 | 欧美成人三级电影在线| 久久久久久亚洲综合影院红桃| 日韩欧美在线观看一区二区三区| 欧美一区二区播放| 国产午夜精品久久| 中文字幕综合网| 欧美成人三级电影在线| 精品国产麻豆免费人成网站| 国产亚洲精品bt天堂精选| 国产精品久久久久一区二区三区 | 亚洲高清免费一级二级三级| 丝袜美腿高跟呻吟高潮一区| 久久精品免费看| 亚洲国产色一区| 久久66热偷产精品| 成人av网站大全| 欧美电影在哪看比较好| 久久伊人蜜桃av一区二区| 国产精品嫩草99a| 国产丝袜美腿一区二区三区| 亚洲天堂a在线| 香蕉乱码成人久久天堂爱免费| 九九**精品视频免费播放| 国产精品911| 欧美性欧美巨大黑白大战| 欧美日韩免费一区二区三区视频| 国产亚洲综合av| 亚洲一卡二卡三卡四卡无卡久久| 久久国产三级精品| 欧美日韩激情在线| 国产精品嫩草影院com| 日韩二区在线观看| 成人激情免费网站| 日韩欧美一二三区| 久久久久久久综合日本| 天堂久久一区二区三区| 国产91精品入口| 51午夜精品国产| 亚洲精品日韩综合观看成人91| 婷婷综合久久一区二区三区| 成人毛片在线观看| 精品久久久三级丝袜| 午夜久久电影网| 色天天综合久久久久综合片| 欧美国产一区在线| 日韩高清欧美激情| 国产精品1024| 久久人人97超碰com|