Array
Array 类用于处理 Values 类型的数组。
Array 继承自 List,而 List 实现了Arrays 和 Strings共有的方法。以下列出了 Array 方法。
以下列出了 Array 提供的方法:
getAt
McoSql::ValueRef getAt( size_t index )
Return a reference to the Value object at index. (Note that, if the application gets a reference to an object, and this object is deallocated (perhaps along with its parent array), the reference becomes invalid. In this case the user should obtain a copy of the object using getCopyAt()(see below) instead of the reference.
返回索引处的Value对象的引用。
如果应用程序获得一个对象的引用,并且该对象被释放(可能与其父数组一起),则该引用无效。在这种情况下,用户应该使用getCopyAt()
而不是引用来获取对象的副本。
getCopyAt
McoSql::Value *getCopyAt( size_t index )
返回索引处对象的副本。
getAt()
和 getCopyAt()
之间的区别在于,getAt()
返回数组中元素的引用(ValueRef
),而 getCopyAt()
返回元素的副本。使用 getCopyAt()
时,应用程序负责显式释放(释放内存)副本。
例如:
// 获取索引0处对象的副本
McoSql::Value *v = array->getCopyAt(0);
// 使用对象...
// 显式销毁副本以避免内存泄漏
v->destroy(&allocator);
setAt
void setAt( size_t index, McoSql::Value* value)
将数组中索引位置为 index
的元素设置为 value
。
updateAt
Value * updateAt( int index )
获取具有指定索引的结构或数组元素以进行更新,返回具有指定索引的元素的Value,该元素的组件或元素将被更新。
size
size_t size();
返回已分配数组中的元素数量。
setSize
void setSize(size_t newSize);
设置要操作的数组中的元素数量。
指定的大小不能超过已分配数组的大小(由 size()
方法返回),并且在完成所需操作后,必须将其恢复为原始值(再次调用 setSize()
方法);否则将无法正确执行释放操作。
getBody
void getBody( void * dst, size_t offs, size_t len )
从数组主体offs
位置起复制指定数量 len
的元素到缓冲区 dst
中。(此方法仅可用于标量类型的数组)
setBody
void setBody( void * src, size_t offs, size_t len )
将缓冲区 src
中offs
位置起指定数量 len
的元素设置到数组 body
中。(此方法仅适用于标量类型的数组)
getElemSize
size_t getElemSize( void )
返回数组元素的大小(以字节为单位)。
getElemType
McoSql::Type getElemType()
返回数组元素类型的类型。
toString
size_t toString( char * buf , size_t & size )
将当前Value序列化到指定的缓冲区。只复制大小字节。如果终止null
不适合大小字节,则结果缓冲区将不会以空结束。
clone
Value * clone( McoSql::Allocator* allocator )
使用指定的内存分配器创建数组的副本。
makeNullable
Array * makeNullable()
将底层值数组作为 NullableArray 返回。