## darray\_t ### 概述 动态数组,根据元素个数动态调整数组的容量。 用darray\_init初始化时,用darray\_deinit释放。如: ```c darray_t darray; darray_init(&darray, 10, destroy, compare); ... darray_deinit(&darray); ``` 用darray\_create创建时,用darray\_destroy销毁。如: ```c darray_t* darray = darray_create(10, destroy, compare); ... darray_destroy(darray); ``` ---------------------------------- ### 函数
| 函数名称 | 说明 | | -------- | ------------ | | darray\_bsearch | 二分查找(确保数组有序)。 | | darray\_bsearch\_index | 二分查找(确保数组有序)。 | | darray\_clear | 清除全部元素。 | | darray\_count | 返回满足条件元素的个数。 | | darray\_create | 创建darray对象。 | | darray\_deinit | 清除全部元素,并释放elms。 | | darray\_destroy | 销毁darray对象。 | | darray\_find | 查找第一个满足条件的元素。 | | darray\_find\_all | 查找全部满足条件的元素。 | | darray\_find\_index | 查找第一个满足条件的元素,并返回位置。 | | darray\_foreach | 遍历元素。 | | darray\_get | 获取指定序数的元素。 | | darray\_head | 返回第一个元素。 | | darray\_init | 初始化darray对象。 | | darray\_pop | 弹出最后一个元素。 | | darray\_push | 在尾巴追加一个元素。 | | darray\_remove | 删除第一个满足条件的元素。 | | darray\_remove\_all | 删除全部满足条件的元素。 | | darray\_remove\_index | 删除指定位置的元素。 | | darray\_sort | 排序。 | | darray\_tail | 返回最后一个元素。 | ### 属性
| 属性名称 | 类型 | 说明 | | -------- | ----- | ------------ | | capacity | uint32\_t | 数组的容量大小。 | | compare | tk\_compare\_t | 元素比较函数。 | | destroy | tk\_destroy\_t | 元素销毁函数。 | | elms | void** | 数组中的元素。 | | size | uint32\_t | 数组中元素的个数。 | #### darray\_bsearch 函数 ----------------------- * 函数功能: >
二分查找(确保数组有序)。 * 函数原型: ``` void* darray_bsearch (darray_t* darray, tk_compare_t cmp, void* ctx); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | void* | 如果找到,返回满足条件的对象,否则返回NULL。 | | darray | darray\_t* | 数组对象。 | | cmp | tk\_compare\_t | 比较函数,为NULL则使用内置的比较函数。 | | ctx | void* | 比较函数的上下文。 | #### darray\_bsearch\_index 函数 ----------------------- * 函数功能: >
二分查找(确保数组有序)。 * 函数原型: ``` int darray_bsearch_index (darray_t* darray, tk_compare_t cmp, void* ctx); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | int | 如果找到,返回满足条件的对象的位置,否则返回-1。 | | darray | darray\_t* | 数组对象。 | | cmp | tk\_compare\_t | 比较函数,为NULL则使用内置的比较函数。 | | ctx | void* | 比较函数的上下文。 | #### darray\_clear 函数 ----------------------- * 函数功能: >
清除全部元素。 * 函数原型: ``` ret_t darray_clear (darray_t* darray); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | darray | darray\_t* | 数组对象。 | #### darray\_count 函数 ----------------------- * 函数功能: >
返回满足条件元素的个数。 * 函数原型: ``` int32_t darray_count (darray_t* darray, void* ctx); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | int32\_t | 返回元素个数。 | | darray | darray\_t* | 单向链表对象。 | | ctx | void* | 比较函数的上下文。 | #### darray\_create 函数 ----------------------- * 函数功能: >
创建darray对象。 * 函数原型: ``` darray_t* darray_create (uint32_t capacity, tk_destroy_t destroy, tk_compare_t compare); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | darray\_t* | 数组对象。 | | capacity | uint32\_t | 数组的初始容量。 | | destroy | tk\_destroy\_t | 元素销毁函数。 | | compare | tk\_compare\_t | 元素比较函数。 | #### darray\_deinit 函数 ----------------------- * 函数功能: >
清除全部元素,并释放elms。 * 函数原型: ``` ret_t darray_deinit (darray_t* darray); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | darray | darray\_t* | 数组对象。 | #### darray\_destroy 函数 ----------------------- * 函数功能: >
销毁darray对象。 * 函数原型: ``` ret_t darray_destroy (darray_t* darray); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | darray | darray\_t* | 数组对象。 | #### darray\_find 函数 ----------------------- * 函数功能: >
查找第一个满足条件的元素。 * 函数原型: ``` void* darray_find (darray_t* darray, void* ctx); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | void* | 如果找到,返回满足条件的对象,否则返回NULL。 | | darray | darray\_t* | 数组对象。 | | ctx | void* | 比较函数的上下文。 | #### darray\_find\_all 函数 ----------------------- * 函数功能: >
查找全部满足条件的元素。 ``` darray_t matched; darray_init(&matched, 0, NULL, NULL); darray_find_all(darray, mycmp, myctx, &matched); ... darray_deinit(&matched); ``` * 函数原型: ``` ret_t darray_find_all (darray_t* darray, tk_compare_t cmp, void* ctx, darray_t* matched); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | darray | darray\_t* | 数组对象。 | | cmp | tk\_compare\_t | 比较函数,为NULL则使用内置的比较函数。 | | ctx | void* | 比较函数的上下文。 | | matched | darray\_t* | 返回满足条件的元素。 | #### darray\_find\_index 函数 ----------------------- * 函数功能: >
查找第一个满足条件的元素,并返回位置。 * 函数原型: ``` int darray_find_index (darray_t* darray, void* ctx); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | int | 如果找到,返回满足条件的对象的位置,否则返回-1。 | | darray | darray\_t* | 数组对象。 | | ctx | void* | 比较函数的上下文。 | #### darray\_foreach 函数 ----------------------- * 函数功能: >
遍历元素。 * 函数原型: ``` ret_t darray_foreach (darray_t* darray, tk_visit_t visit, void* ctx); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | darray | darray\_t* | 数组对象。 | | visit | tk\_visit\_t | 遍历函数。 | | ctx | void* | 遍历函数的上下文。 | #### darray\_get 函数 ----------------------- * 函数功能: >
获取指定序数的元素。 * 函数原型: ``` void* darray_get (darray_t* darray, uint32_t index); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | void* | 返回满足条件的对象,否则返回NULL。 | | darray | darray\_t* | 数组对象。 | | index | uint32\_t | 序数。 | #### darray\_head 函数 ----------------------- * 函数功能: >
返回第一个元素。 * 函数原型: ``` void* darray_head (darray_t* darray); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | void* | 成功返回最后一个元素,失败返回NULL。 | | darray | darray\_t* | 数组对象。 | #### darray\_init 函数 ----------------------- * 函数功能: >
初始化darray对象。 * 函数原型: ``` darray_t* darray_init (darray_t* darray, uint32_t* capacity, tk_destroy_t destroy, tk_compare_t compare); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | darray\_t* | 数组对象。 | | darray | darray\_t* | 数组对象。 | | capacity | uint32\_t* | 数组的初始容量。 | | destroy | tk\_destroy\_t | 元素销毁函数。 | | compare | tk\_compare\_t | 元素比较函数。 | #### darray\_pop 函数 ----------------------- * 函数功能: >
弹出最后一个元素。 * 函数原型: ``` void* darray_pop (darray_t* darray); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | void* | 成功返回最后一个元素,失败返回NULL。 | | darray | darray\_t* | 数组对象。 | #### darray\_push 函数 ----------------------- * 函数功能: >
在尾巴追加一个元素。 * 函数原型: ``` ret_t darray_push (darray_t* darray, void* data); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | darray | darray\_t* | 数组对象。 | | data | void* | 待追加的元素。 | #### darray\_remove 函数 ----------------------- * 函数功能: >
删除第一个满足条件的元素。 * 函数原型: ``` ret_t darray_remove (darray_t* darray, void* ctx); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | darray | darray\_t* | 数组对象。 | | ctx | void* | 比较函数的上下文。 | #### darray\_remove\_all 函数 ----------------------- * 函数功能: >
删除全部满足条件的元素。 * 函数原型: ``` ret_t darray_remove_all (darray_t* darray, tk_compare_t cmp, void* ctx); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | darray | darray\_t* | 数组对象。 | | cmp | tk\_compare\_t | 比较函数,为NULL则使用内置的比较函数。 | | ctx | void* | 比较函数的上下文。 | #### darray\_remove\_index 函数 ----------------------- * 函数功能: >
删除指定位置的元素。 * 函数原型: ``` ret_t darray_remove_index (darray_t* darray, uint32_t index); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | darray | darray\_t* | 数组对象。 | | index | uint32\_t | 位置序数。 | #### darray\_sort 函数 ----------------------- * 函数功能: >
排序。 * 函数原型: ``` ret_t darray_sort (darray_t* darray, tk_compare_t cmp); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 | | darray | darray\_t* | 数组对象。 | | cmp | tk\_compare\_t | 比较函数,为NULL则使用内置的比较函数。 | #### darray\_tail 函数 ----------------------- * 函数功能: >
返回最后一个元素。 * 函数原型: ``` void* darray_tail (darray_t* darray); ``` * 参数说明: | 参数 | 类型 | 说明 | | -------- | ----- | --------- | | 返回值 | void* | 成功返回最后一个元素,失败返回NULL。 | | darray | darray\_t* | 数组对象。 | #### capacity 属性 ----------------------- >
数组的容量大小。 * 类型:uint32\_t | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 | #### compare 属性 ----------------------- >
元素比较函数。 * 类型:tk\_compare\_t | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 | #### destroy 属性 ----------------------- >
元素销毁函数。 * 类型:tk\_destroy\_t | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 | #### elms 属性 ----------------------- >
数组中的元素。 * 类型:void** | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 | #### size 属性 ----------------------- >
数组中元素的个数。 * 类型:uint32\_t | 特性 | 是否支持 | | -------- | ----- | | 可直接读取 | 是 | | 可直接修改 | 否 |