通用库动态对象数组模板类

///通用库动态对象数组模板类
/**
 * 通用库4.0版<br>
 * 这里定义了一个动态对象数组模板类。这个数组适合不能移动的对象或含有指针或被引用的对象。
 * 特点就是,不会像XArray中一样,调整数组容量,会造所有数组元素地址都发生变化。
 * @author zdhsoft(祝冬华)
 * @version 4.0
 * @date 2008-03-01
 * @file xobjectarray.h
 */
#ifndef _X_OBJECT_ARRAY_H_
#define _X_OBJECT_ARRAY_H_
#include <xarray.h>
namespace zdh
{
 ///动态对象数组
 template<class T>
 class XObjectArray
 {
 public:
  typedef T ElementType;
  typedef ElementType * PElementType;
  ///默认构造函数
  XObjectArray()
  {}
  ///指定初始元素个数的构造函数
  /**
   @param [in] aInitLength 初始化数组的大小
  */
  XObjectArray(XInt aInitLength)
  {
   if( aInitLength > 0)
   {
    InitLength(aInitLength);
   }
  }
  ///指定初始元素个数以及缺省元素值的构造函数
  /**
    @param [in] aInitLength 初始化数组的大小
    @param [in] aDefault 初始化数组元素的默认值
  */
  XObjectArray(XInt aInitLength,const T & aDefault)
  {
   if( aInitLength > 0)
   {
    InitLength(aInitLength,aDefault);
   }
  }
  ///缺省拷贝构造函数
  XObjectArray(const XObjectArray<T> & v);
  ///指定大小以及初始元素指针的构造函数
  XObjectArray(const T * pData,XInt aSize,XInt aStartIndex = 0);
  ///指定大小以及初始元素数组的构造函数
  XObjectArray(const XObjectArray<T> & v,XInt aSize,XInt aStartIndex = 0);

  ///默认析构函数
  ~XObjectArray()
  {
   Clear();
  }
  ///清除数组
  void Clear();
  ///取数组的最大容量
  XInt getMaxCapacity() const
  {
   return 0x7ffffff0 / sizeof(T);
  }

时间: 2024-08-24 11:17:28

通用库动态对象数组模板类的相关文章

通用库动态数组模板类

///通用库动态数组模板类/** * 通用库4.0版<br> * 这里定义了一个动态数组模板类.这次将以前的XDyanmicArray和XArray合并成一个XArray了. * 除此之外,增加了数组元素初始化为0的操作,同时,会执行数组元素默认的构造函数和析造函数. * 同样,这个动态数组比较适合元数据中没有指针数据成员的元素或额外使用资源的元素. * 对于使用对象为数组元素的数组,可以使用XObjectArray模板类,可以有效的解决问题. * @author zdhsoft(祝冬华) *

通用库动态集合模板类

  /**////通用库动态集合模板类/**//** * 通用库4.0版<br> * 这是一个集合类,这个类的元素存放是一个有序的数组.这个类的元素查找方法为二分查找. * 这个类提供了类相关的所有功能.集合的方法有交集*,并集+,差集-,除此之后,还有*=,+=,-=等对应方法. * 集合类通过Contains,检查指定元素是否在集合中 * @author zdhsoft(祝冬华) * @version 4.0 * @date 2008-04-01 * @file xset.h */#ifn

一个ASP创建动态对象的工厂类(类似PHP的stdClass)_ASP编程

最近整理ASP/VBScript代码,发现过去的一个ASP实现的MVC框架,可惜是个半成品,效率也成问题,不过发现里面有些我写的代码,感觉还稍稍可以拿出来见人,于是今天作此文以记之. 说是ASP,其实和VBScript也脱不了干系,VBScript语言传承于Visual Basic,VB的语法灵活度已经不尽如人意了,VBS作为其子集可想而知.神马反射.自省等先进的技术,微软在.NET中才引入.作为被抛弃的技术,也不奢望微软能够提供支持,于是顽固守旧的程序员只有绞尽脑汁的去模仿实现一些类似的功能.

一个ASP创建动态对象的工厂类(类似PHP的stdClass)

最近整理ASP/VBScript代码,发现过去的一个ASP实现的MVC框架,可惜是个半成品,效率也成问题,不过发现里面有些我写的代码,感觉还稍稍可以拿出来见人,于是今天作此文以记之. 说是ASP,其实和VBScript也脱不了干系,VBScript语言传承于Visual Basic,VB的语法灵活度已经不尽如人意了,VBS作为其子集可想而知.神马反射.自省等先进的技术,微软在.NET中才引入.作为被抛弃的技术,也不奢望微软能够提供支持,于是顽固守旧的程序员只有绞尽脑汁的去模仿实现一些类似的功能.

c++模板类

理解编译器的编译模板过程 如何组织编写模板程序 前言常遇到询问使用模板到底是否容易的问题,我的回答是:"模板的使用是容易的,但组织编写却不容易".看看我们几乎每天都能遇到的模板类吧,如STL, ATL, WTL, 以及Boost的模板类,都能体会到这样的滋味:接口简单,操作复杂. 我在5年前开始使用模板,那时我看到了MFC的容器类.直到去年我还没有必要自己编写模板类.可是在我需要自己编写模板类时,我首先遇到的事实却是"传统"编程方法(在*.h文件声明,在*.cpp文

asp.net1.1 开发专用模板类

asp.net|模板 做web开发也有几年了.自己在不同的公司有不同的认识.最近做blog项目.自己认识到了模板类在web开发中的作用.自己晚上在家.总想可以做一个专门的为asp.ne开发而设计的模板类.于是就写了这个模板类.    下载地址点这     把下载下来的 500sea.txt 文件改名为  Templet.rar 文件打开就可以 如果打开http://img.club.163.com/images/user/other/500sea没有提示 500sea.txt文件下载.那就用网络

模板类的友元

非模板友元 声明一个常规友元 template <class T> class HasFriend { public: friend void counts(); } 上边的声明使counts()函数成为模板所有实例化的友元 counts()函数不是通过对象调用的(它是友元,不是成员函数),也没有对象参数,那么它如何访问HasFriend对象的呢 有很多种可能性.它可以访问全局对象;可以使用全局指针访问非全局对象;可以创建自己的对象;可以访问独立对象的模板类 的静态数据成员. 如果要为友元函数

通用库Map模板类

///通用库Map模板类/** * 通用库4.0版<br> * 这是一个映射类,提供基本的Map功能,这个映射是基于动态有序数组,查找方式用二分查找.<br> * 主要的方法有operator[],getValue(),getKey(),operator=,getLength(),RemoveByKey(),RemoveByIndex(),Clear(),Contains()等方法<br> * 除此之外,还提了一些类数组的方法.getCapaity(),getFirst

ASP 通用模板类

模板 ASP 通用模板类. 适合存在较少循环的模板.未实现内部循环,需要使用正则表达式,较浪费资源和时间,如需使用可参考这篇文章. 特性可设定私有缓存或公共缓存,提高效率可自由选择使用 Stream 组件或 FSO 组件支持自定义文件编码可保存文件 属性 Name文本,该模板名称,主要用于使用公共缓存时区分不同模板. Format文本,文件编码类型,可设置值. Object文本,使用组件,可设置值: StreamFSO PublicCache布尔值,使用公共缓存,开启时模板文件将保存到Appli