1、前言
ACE提供的数组类型是ACE_Array,是一模板类,构造方法如下:
ACE_Array<DataElement*> arr(10);
使用方法:
(1)arr[i]=....
(2)利用专门针对ACE_Array的迭代器ACE_Array<DataElement*>::ITERATOR iter(arr)来实现数组数据访问。
ACE提供的数组不是序列,但是一种安全包装的类型。
2、测试数组代码
#include "ace/Containers.h"
#include "DataElement.h"
//数组测试
//ACE提供的数据类型是ACE_Array,是一模板类型
class Array_Practice
{
public:
int static runArray(void)
{
//数组定义,注意数组元素是指针,这意味着数组元素在堆上创建,函数结束前要手工释放内存
ACE_TRACE(ACE_TEXT("Array_Practice::runArray"));
ACE_DEBUG((LM_DEBUG,ACE_TEXT("Using an Array/n")));
ACE_Array<DataElement*> arr(10);
DataElement* elem=0;
for(int i=0;i<10;i++)
{
ACE_NEW_RETURN(elem,DataElement(i),-1);
arr[i]=elem;
}
//数组边界检查
ACE_ASSERT(arr.set(elem,11)==-1);
ACE_ASSERT(arr.get(elem,11)==-1);
//数组拷贝
ACE_Array<DataElement*> copy=arr;
//断言:两个数组应该相等
ACE_ASSERT(copy==arr);
//利用迭代器来访问数组
//ACE_ARRAY<DataElement*>::ITERATOR是用来迭代ACE_ARRAY对象的类型
ACE_Array<DataElement*>::ITERATOR iter(arr);
while(!iter.done())
{
DataElement** data;
iter.next(data);
ACE_DEBUG((LM_DEBUG,ACE_TEXT("%d "),(*data)->getData()));
delete (*data);//释放内存
iter.advance();
}
ACE_DEBUG((LM_DEBUG,ACE_TEXT("/n")));
return 0;
}
};