⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ftvector.h

📁 ftgl-2.1.2 夸平台的opengl显示字体
💻 H
字号:
#ifndef    __FTVector__#define    __FTVector__#include "FTGL.h"/** * Provides a non-STL alternative to the STL vector */template <typename FT_VECTOR_ITEM_TYPE>class FTGL_EXPORT FTVector{    public:        typedef FT_VECTOR_ITEM_TYPE value_type;        typedef value_type& reference;        typedef const value_type& const_reference;        typedef value_type* iterator;        typedef const value_type* const_iterator;        typedef size_t size_type;                FTVector()        {            Capacity = Size = 0;            Items = 0;        }                virtual ~FTVector()        {            clear();        }                FTVector& operator =(const FTVector& v)        {            reserve(v.capacity());                        iterator ptr = begin();            const_iterator vbegin = v.begin();            const_iterator vend = v.end();                        while( vbegin != vend)            {                *ptr++ = *vbegin++;            }                        Size = v.size();            return *this;        }                size_type size() const        {            return Size;        }                size_type capacity() const        {            return Capacity;        }                iterator begin()        {            return Items;        }                const_iterator begin() const        {            return Items;        }                iterator end()        {            return begin() + size();         }                const_iterator end() const        {            return begin() + size();         }                bool empty() const         {             return size() == 0;         }        reference operator [](size_type pos)         {             return( *(begin() + pos));         }        const_reference operator []( size_type pos) const         {             return( *(begin() + pos));         }                void clear()        {            if( Capacity)            {                delete [] Items;                Capacity = Size = 0;                Items = 0;            }        }        void reserve( size_type n)        {            if( capacity() < n)            {                expand(n);            }        }        void push_back(const value_type& x)        {            if( size() == capacity())            {                expand();            }                      ( *this)[size()] = x;            ++Size;        }        void resize(size_type n, value_type x)        {            if( n == size())            {                return;            }                        reserve(n);            iterator begin, end;                        if( n >= Size)            {                begin = this->end();                end = this->begin() + n;            }            else            {                begin = this->begin() + n;                end = this->end();            }                    while( begin != end)            {                *begin++ = x;            }                    Size = n;        }            private:        void expand(size_type capacity_hint = 0)        {            size_type new_capacity =( capacity() == 0) ? 256 : capacity()* 2;            if( capacity_hint)            {                while( new_capacity < capacity_hint)                {                    new_capacity *= 2;                }            }                        value_type *new_items = new value_type[new_capacity];                        iterator begin = this->begin();            iterator end = this->end();            value_type *ptr = new_items;                        while( begin != end)            {                *ptr++ = *begin++;            }                        if( Capacity)            {                delete [] Items;            }                    Items = new_items;            Capacity = new_capacity;        }        size_type Capacity;        size_type Size;        value_type* Items;};#endif  //  __FTVector__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -