动态数组
来源:互联网 发布:南方贵金属交易软件 编辑:程序博客网 时间:2024/04/30 10:14
from Arcemu code:
/* * Copyright (c) 2001 Jani Kajala * * Permission to use, copy, modify, distribute and sell this * software and its documentation for any purpose is hereby * granted without fee, provided that the above copyright notice * appear in all copies and that both that copyright notice and * this permission notice appear in supporting documentation. * Jani Kajala makes no representations about the suitability * of this software for any purpose. It is provided "as is" * without express or implied warranty. */#ifndef _DEV_ARRAY_H#define _DEV_ARRAY_H/** Very simple dynamic array. */template <class T> class Array{public:/** Creates an empty array. */Array() :m_data(0), m_len(0), m_cap(0){}/** Creates an array of specified size. */explicit Array(int size) :m_data(0), m_len(0), m_cap(0){setSize(size);}///~Array(){delete[] m_data;}/** Appends an item at the end of the array. */void add(const T & item){if(m_len + 1 > m_cap)setCapacity(m_len + 1);m_data[m_len++] = item;}/** Resizes the array. */void setSize(int size){if(size > m_cap)setCapacity(size);m_len = size;}/** Returns ith item. */T & operator[](int i){return m_data[i];}/** Returns pointer to the first element in the vector. */T* begin(){return m_data;}/** Returns pointer to one beyond the last element in the vector. */T* end(){return m_data + m_len;}/** Returns number of items in the array. */int size() const{return m_len;}/** Returns ith item. */const T & operator[](int i) const{return m_data[i];}/** Returns pointer to the first element in the vector. */const T* begin() const{return m_data;}/** Returns pointer to one beyond the last element in the vector. */const T* end() const{return m_data + m_len;}private:T*m_data;intm_len;intm_cap;void setCapacity(int cap){++cap;if(cap < 8)cap = 8;else if(cap < m_cap * 2)cap = m_cap * 2;m_cap = cap;T* data = new T[cap];for(int i = 0 ; i < m_len ; ++i)data[i] = m_data[i];delete[] m_data;m_data = data;}};#endif // _DEV_ARRAY_H
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- 动态数组
- screen小记
- android编译问题,如何控制make编译hdpi,mdpi和默认的高度和宽度
- 调试+linux+网络问题+wiki
- 从技术人员转向产品经理需注意的几点
- Java 非阻塞算法(1)
- 动态数组
- linux下apache自动启动设置
- C#文件编译
- C++读写文件
- mysql中对查询结果进行排序
- 算法设计--基础知识
- TNS-12537, TNS-12560, TNS-00507
- SQL Server 2005控制用户权限访问表
- VML