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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? array.h

?? FastDb是高效的內(nèi)存數(shù)據(jù)庫系統(tǒng)
?? H
字號:
//-< ARRAY.H >-------------------------------------------------------*--------*// FastDB                    Version 1.0         (c) 1999  GARRET    *     ?  *// (Main Memory Database Management System)                          *   /\|  *//                                                                   *  /  \  *//                          Created:     20-Nov-98    K.A. Knizhnik  * / [] \ *//                          Last update: 20-Dec-98    K.A. Knizhnik  * GARRET *//-------------------------------------------------------------------*--------*// Array type for table record fields//-------------------------------------------------------------------*--------*#ifndef __ARRAY_H__#define __ARRAY_H__BEGIN_FASTDB_NAMESPACE/** * Base class for all arrays */class FASTDB_DLL_ENTRY dbAnyArray {     friend class dbTableDescriptor;  protected:    size_t len;  public:    static void arrayAllocator(dbAnyArray* aArray, void* data, size_t length)    {        aArray->len = length;        *(void**)(aArray+1) = data;    }    /**     * Get number of elements     * @return array length     */    size_t length() const { return len; }    /**     * Get pointer to array elements. You should not update them directly.     * @return pointer to array element     */    void const* base() const { return *(void*const*)(this+1); }};    /** * Template for arrays */template<class T>class dbArray : public dbAnyArray {     friend class dbTableDescriptor;  protected:    T*     data;    size_t allocated;        static void arrayAllocator(dbAnyArray* aArray, void* data, size_t length)    {        dbArray* array = (dbArray*)aArray;        array->len = length;        if (array->allocated) {             delete[] array->data;        }        if (data != NULL || length == 0) {             array->data = (T*)data;            array->allocated = 0;        } else {             array->data = new T[length];            array->allocated = length;        }    }     inline void memcpy(T* dst, T const* src, size_t len) {         int n = (int)len;        while (--n >= 0) {             *dst++ = *src++;        }    }    inline void memmove(T* dst, T const* src, size_t len) {         int n = (int)len;        if (dst < src) {            while (--n >= 0) {                 *dst++ = *src++;            }        } else {             dst += n;            src += n;                   while (--n >= 0) {                 *--dst = *--src;            }        }    }   public:    dbFieldDescriptor* dbDescribeComponents(dbFieldDescriptor* fd) {         fd->type = fd->appType = dbField::tpArray;        fd->dbsSize = sizeof(dbVarying);        fd->alignment = 4;        fd->arrayAllocator = arrayAllocator;        return dbDescribeField(new dbFieldDescriptor("[]", 0, sizeof(T), 0),                               *(T*)fd);     }    /**     * Default constructor      */    dbArray() {         data = NULL;         len = 0;        allocated = 0;    }    /**     * Construct array with specified length     * @param size array length     */    dbArray(size_t size) {         if (size != 0) {             data = new T[size];         }        len = size;        allocated = size;    }    /**     * Construct array with specified content     * @param ptr pointer to the elements     * @param size size of array     * @param allocate if 0, then array will just points to specified location of     * elements, otherwise elements will be copied to the created buffer     */    dbArray(T const* ptr, size_t size, size_t allocate = 0) {         len = size;        allocated = allocate;        if (allocate != 0) {             assert(allocate >= size);            data = new T[allocate];            memcpy(data, ptr, size);            } else {             data = (T*)ptr;        }    }    /**     * Copy constructor     * @param arr source array     */    dbArray(dbArray const& arr) {         allocated = arr.allocated;        len = arr.len;        if (allocated) {             data = new T[allocated];            memcpy(data, arr.data, len);                } else {             data = arr.data;        }    }    /**     * Destructor     */    ~dbArray() {         if (allocated) {             delete[] data;        }    }    /**     * Assignment operator     * @return this     */    dbArray& operator = (dbArray const& arr) {         if (this == &arr) {             return *this;        }        if (allocated) {             delete[] data;        }        if ((len = arr.len) != 0) {             data = new T[len];            memcpy(data, arr.data, len);        }        allocated = len;        return *this;    }    /**     * Get last element of the array     * @return last element of the array     */    T const& last() {        assert(len > 0);        return data[len-1];    }    /**     * Assign content to the array     * @param ptr pointer to the assigned elements     * @param size number of elements     * @param copy if 0, then array will just points to specified location of     * elements, otherwise elements will be copied to the created buffer     */    void assign(T const* ptr, size_t size, bool copy = true) {         if (allocated) {             delete[] data;        }        len = size;        if (copy && size != 0) {             data = new T[size];            memcpy(data, ptr, size);                allocated = size;        } else {             data = (T*)ptr;            allocated = 0;        }    }    /**     * Get array element with specified index.     * @param index element index     * @return element with specified index     */    T const& operator [](size_t index) const {         assert(index < len);        return data[index];    }    /**     * Store element at the specified position     * @param index element index     * @param value stored element value     */    void putat(size_t index, T const& value) {         assert(index < len);        if (!allocated) {             T* copy = new T[len];            memcpy(copy, data, len);            data = copy;            allocated = len;        }        data[index] = value;    }        /**     * Get array element with specified index.     * @param index element index     * @return element with specified index     */    T const& getat(size_t index) const {        assert(index < len);        return data[index];    }    /**     * Make array empty     */    void clear() {         if (allocated) {            delete[] data;        }        data = NULL;        len = 0;        allocated = 0;    }    /**     * Resize array     * @param size new array size     */    void resize(size_t size) {         if (size > len && size > allocated) {             T* p = new T[size];            memcpy(p, data, len);            if (allocated) {                 delete[] data;            }            data = p;            allocated = size;        }        len = size;    }    /**     * Append value to the array     * @param value appended element     */    void append(T const& value) {         insert(value, len);    }    /**     * Insert element in the array at specified position     * @param value inserted value     * @param index insert position     */    void insert(T const& value, size_t index = 0) {         assert(index <= len);        if (len >= allocated) {            size_t newSize = len == 0 ? 8 : len*2;            T* p = new T[newSize];            memcpy(p, data, index);            p[index] = value;            memcpy(p+index+1, data+index, (len-index));            if (allocated) {                 delete[] data;            }            data = p;            allocated = newSize;        } else {             memmove(data+index+1, data+index, (len-index));            data[index] = value;        }        len += 1;    }        /**      * Remove element a specified position.     * @param index position of the deleted element     */    void remove(size_t index) {         assert(index < len);        len -= 1;        if (index != len && !allocated) {             T* p = new T[len];            memcpy(p, data, index);            memcpy(p+index, data+index+1, (len-index));            allocated = len;            data = p;        } else {             memmove(data+index, data+index+1, (len-index));        }    }    /**     * Get pointer to array elements. You should not directly change them.     * @return array elements     */    T const* get() const { return data; }    /**     * Get pointer to array elements to perform update.     * @return array elements     */    T* update() {         if (!allocated) {            T* copy = new T[len];            memcpy(copy, data, len);            data = copy;            allocated = len;        }        return data;     }};/** * Search for first accurance of specified value in the array * @param value searched value * @return index of first element with such value or -1 if there are not such element */template<class T>int index(dbArray<T> const& a, T value) {    for (int i = 0, n = a.length(); i < n; i++) {      if (a[i] == value) {          return i;      }    }    return -1;}/** * Search for last accurance of specified value in the array * @param value searched value * @return index of last element with such value or -1 if there are not such element */template<class T>int rindex(dbArray<T> const& a, T value) {    int i = a.length();    while (--i >= 0 && a[i] != value);    return i;}END_FASTDB_NAMESPACE#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美人动与zoxxxx乱| 欧美aaaaa成人免费观看视频| 8x8x8国产精品| 欧美在线观看视频在线| 色久优优欧美色久优优| 94色蜜桃网一区二区三区| 成人综合婷婷国产精品久久蜜臀 | 天天射综合影视| 亚洲欧洲日韩综合一区二区| 中文字幕的久久| 久久久高清一区二区三区| 国产欧美视频一区二区三区| 国产精品亲子伦对白| 国产精品久久久久久久午夜片| 中文字幕在线观看不卡| 亚洲欧美日韩一区| 视频一区在线视频| 国内精品国产成人| 成人综合婷婷国产精品久久免费| 色综合久久久久久久| 欧美电影影音先锋| 久久久不卡网国产精品二区| 亚洲欧美日韩电影| 日韩电影一区二区三区| 丰满亚洲少妇av| 欧美主播一区二区三区美女| 日韩欧美一区中文| 国产精品免费观看视频| 日韩成人免费看| 成人免费高清在线观看| 欧美日韩和欧美的一区二区| 精品国一区二区三区| 亚洲色图色小说| 久久精品国产亚洲aⅴ| 成人免费观看视频| 欧美一区二区久久| 亚洲欧美中日韩| 麻豆成人综合网| 色欧美乱欧美15图片| 亚洲精品一线二线三线无人区| 中文字幕欧美一区| 久久99国产精品成人| 在线视频一区二区免费| 精品乱码亚洲一区二区不卡| 亚洲精品国久久99热| 国产乱码精品一区二区三区五月婷| 97精品国产97久久久久久久久久久久| 91精品国产综合久久香蕉的特点| 国产精品乱码妇女bbbb| 免费成人在线观看| 欧美亚洲一区二区在线| 日本成人在线网站| 色综合网站在线| 2021久久国产精品不只是精品| 一区二区三区四区视频精品免费| 国产激情精品久久久第一区二区 | 中文字幕+乱码+中文字幕一区| 亚洲国产成人av| av影院午夜一区| 欧美成人精品3d动漫h| 亚洲一区二三区| 91在线观看视频| 国产蜜臀97一区二区三区| 加勒比av一区二区| 日韩一区和二区| 无码av中文一区二区三区桃花岛| 色天天综合久久久久综合片| 国产精品久久久久久久久久久免费看 | 亚洲人吸女人奶水| 成人av在线一区二区三区| 久久亚洲捆绑美女| 国产综合色视频| 337p粉嫩大胆噜噜噜噜噜91av| 免费观看日韩av| 欧美高清视频不卡网| 丝袜亚洲另类丝袜在线| 欧美精品日韩一本| 日本女优在线视频一区二区| 欧美一区二区三区视频| 久久精品国产精品亚洲精品| 日韩欧美国产三级电影视频| 精品写真视频在线观看| 久久午夜老司机| av综合在线播放| 夜夜夜精品看看| 欧美日韩1区2区| 九一久久久久久| 中文字幕欧美国产| 91麻豆福利精品推荐| 亚洲一区二区三区爽爽爽爽爽 | 久久久777精品电影网影网| 国产伦精品一区二区三区免费迷 | 亚洲美女屁股眼交| 欧美性做爰猛烈叫床潮| 日韩电影在线看| 日韩亚洲国产中文字幕欧美| 国产一级精品在线| 国产精品日日摸夜夜摸av| 在线免费观看日韩欧美| 天天做天天摸天天爽国产一区 | 国产精品99久久久久久久vr| 国产精品色婷婷| 欧美午夜视频网站| 国内欧美视频一区二区| 专区另类欧美日韩| 日韩色视频在线观看| 懂色中文一区二区在线播放| 亚洲一级在线观看| 久久免费的精品国产v∧| 91丨porny丨在线| 美女视频黄a大片欧美| 欧美国产成人在线| 91精品国产福利在线观看| 成人一级片网址| 首页国产丝袜综合| 国产精品伦理在线| 日韩欧美一区在线| 日本韩国欧美三级| 国产精品一色哟哟哟| 午夜欧美一区二区三区在线播放| 精品成人一区二区三区四区| 91免费观看国产| 国产麻豆精品在线| 秋霞电影网一区二区| 亚洲人成伊人成综合网小说| 精品1区2区在线观看| 欧美日韩一区二区在线观看 | 日韩二区三区四区| 亚洲欧美日韩在线播放| 国产欧美日韩精品一区| 日韩情涩欧美日韩视频| 欧美日韩精品一区二区三区| 成人白浆超碰人人人人| 国产一区二区主播在线| 日韩高清在线不卡| 亚洲国产精品尤物yw在线观看| 中文字幕亚洲在| 国产无人区一区二区三区| 日韩欧美专区在线| 欧美美女一区二区| 欧美日韩在线三级| 欧美调教femdomvk| 色综合av在线| 91久久精品网| 色中色一区二区| 91麻豆swag| 91色在线porny| 色综合久久中文综合久久牛| 成人av网站大全| 99精品视频免费在线观看| 成人激情午夜影院| 成人免费视频免费观看| 丁香一区二区三区| 成人黄色电影在线| av一区二区三区四区| 一本大道综合伊人精品热热| 91精品1区2区| 欧美日韩一区 二区 三区 久久精品| 91久久精品一区二区三| 欧美最新大片在线看 | 麻豆精品国产传媒mv男同| 奇米在线7777在线精品| 美女久久久精品| 狠狠色综合播放一区二区| 国产成人免费视频网站高清观看视频 | 寂寞少妇一区二区三区| 国产一区视频在线看| 成人国产精品免费观看视频| 91蜜桃网址入口| 欧美日韩二区三区| 欧美成人精品3d动漫h| 国产调教视频一区| 亚洲欧洲性图库| 偷窥少妇高潮呻吟av久久免费| 视频一区视频二区在线观看| 美国一区二区三区在线播放| 国产精品一区二区免费不卡| 国产美女主播视频一区| 91丨九色丨黑人外教| 欧美日本一道本在线视频| 精品国产麻豆免费人成网站| 国产亚洲欧美在线| 亚洲国产精品影院| 国产激情一区二区三区四区| 在线观看视频一区| 精品对白一区国产伦| 亚洲欧美一区二区三区国产精品| 日本亚洲欧美天堂免费| 国产成人精品亚洲午夜麻豆| 欧美亚洲一区三区| 国产午夜精品在线观看| 亚洲电影视频在线| 国产91综合一区在线观看| 精品视频一区三区九区| 欧美国产禁国产网站cc| 偷窥国产亚洲免费视频| 成人免费高清在线| 欧美电影免费观看高清完整版在线| 国产精品国产三级国产普通话三级 | 一本色道久久综合狠狠躁的推荐|