2018-12-20 17:33:31 +08:00
|
|
|
|
## array\_t
|
|
|
|
|
### 概述
|
|
|
|
|
动态数组,根据元素个数动态调整数组的容量。
|
|
|
|
|
|
2018-12-27 15:28:20 +08:00
|
|
|
|
用array\_init初始化时,用array\_deinit释放。如:
|
|
|
|
|
|
|
|
|
|
```c
|
|
|
|
|
array_t array;
|
|
|
|
|
array_init(&array, 10);
|
|
|
|
|
...
|
|
|
|
|
array_deinit(&array);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
用array\_create创建时,用array\_destroy销毁。如:
|
|
|
|
|
|
|
|
|
|
```c
|
|
|
|
|
array_t* array = array_create(10);
|
|
|
|
|
...
|
|
|
|
|
array_destroy(array);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
2019-01-15 14:34:05 +08:00
|
|
|
|
|
|
|
|
|
----------------------------------
|
2018-12-20 17:33:31 +08:00
|
|
|
|
### 函数
|
|
|
|
|
<p id="array_t_methods">
|
|
|
|
|
|
|
|
|
|
| 函数名称 | 说明 |
|
|
|
|
|
| -------- | ------------ |
|
2018-12-21 12:11:40 +08:00
|
|
|
|
| <a href="#array_t_array_create">array\_create</a> | 创建array对象 |
|
|
|
|
|
| <a href="#array_t_array_deinit">array\_deinit</a> | 清除数组中的元素。 |
|
|
|
|
|
| <a href="#array_t_array_destroy">array\_destroy</a> | 清除数组中的元素,并释放数组对象。 |
|
|
|
|
|
| <a href="#array_t_array_find">array\_find</a> | 查找第一个满足条件的元素。 |
|
|
|
|
|
| <a href="#array_t_array_find_index">array\_find\_index</a> | 查找第一个满足条件的元素,并返回位置。 |
|
|
|
|
|
| <a href="#array_t_array_init">array\_init</a> | 初始化array对象 |
|
|
|
|
|
| <a href="#array_t_array_pop">array\_pop</a> | 弹出最后一个元素。 |
|
|
|
|
|
| <a href="#array_t_array_push">array\_push</a> | 在尾巴追加一个元素。 |
|
|
|
|
|
| <a href="#array_t_array_remove">array\_remove</a> | 删除第一个满足条件的元素。 |
|
|
|
|
|
| <a href="#array_t_array_remove_all">array\_remove\_all</a> | 删除全部满足条件的元素。 |
|
2018-12-20 17:33:31 +08:00
|
|
|
|
### 属性
|
|
|
|
|
<p id="array_t_properties">
|
|
|
|
|
|
|
|
|
|
| 名属性称 | 类型 | 说明 |
|
|
|
|
|
| -------- | ----- | ------------ |
|
2018-12-21 18:29:29 +08:00
|
|
|
|
| <a href="#array_t_capacity">capacity</a> | uint16\_t | 数组的容量大小。 |
|
2018-12-21 12:11:40 +08:00
|
|
|
|
| <a href="#array_t_elms">elms</a> | void** | 数组中的元素。 |
|
2018-12-21 18:29:29 +08:00
|
|
|
|
| <a href="#array_t_size">size</a> | uint16\_t | 数组中元素的个数。 |
|
2018-12-20 17:33:31 +08:00
|
|
|
|
#### array\_create 函数
|
2018-12-21 18:29:29 +08:00
|
|
|
|
-----------------------
|
|
|
|
|
|
|
|
|
|
* 函数功能:
|
|
|
|
|
|
|
|
|
|
> <p id="array_t_array_create"> 创建array对象
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-12-21 11:39:05 +08:00
|
|
|
|
* 函数原型:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
array_t* array_create (uint16_t* capacity);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
* 参数说明:
|
|
|
|
|
|
2018-12-20 17:33:31 +08:00
|
|
|
|
| 参数 | 类型 | 说明 |
|
|
|
|
|
| -------- | ----- | --------- |
|
|
|
|
|
| 返回值 | array\_t* | 数组对象。 |
|
|
|
|
|
| capacity | uint16\_t* | 数组的初始容量。 |
|
2018-12-21 18:29:29 +08:00
|
|
|
|
#### array\_deinit 函数
|
|
|
|
|
-----------------------
|
|
|
|
|
|
2018-12-21 11:39:05 +08:00
|
|
|
|
* 函数功能:
|
|
|
|
|
|
2018-12-21 18:29:29 +08:00
|
|
|
|
> <p id="array_t_array_deinit"> 清除数组中的元素。
|
2018-12-20 17:33:31 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-12-21 11:39:05 +08:00
|
|
|
|
* 函数原型:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
void array_deinit (array_t* array);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
* 参数说明:
|
|
|
|
|
|
2018-12-20 17:33:31 +08:00
|
|
|
|
| 参数 | 类型 | 说明 |
|
|
|
|
|
| -------- | ----- | --------- |
|
|
|
|
|
| 返回值 | void | 无。 |
|
|
|
|
|
| array | array\_t* | 数组对象。 |
|
2018-12-21 18:29:29 +08:00
|
|
|
|
#### array\_destroy 函数
|
|
|
|
|
-----------------------
|
|
|
|
|
|
2018-12-21 11:39:05 +08:00
|
|
|
|
* 函数功能:
|
|
|
|
|
|
2018-12-21 18:29:29 +08:00
|
|
|
|
> <p id="array_t_array_destroy"> 清除数组中的元素,并释放数组对象。
|
2018-12-20 17:33:31 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-12-21 11:39:05 +08:00
|
|
|
|
* 函数原型:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
void array_destroy (array_t* array);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
* 参数说明:
|
|
|
|
|
|
2018-12-20 17:33:31 +08:00
|
|
|
|
| 参数 | 类型 | 说明 |
|
|
|
|
|
| -------- | ----- | --------- |
|
|
|
|
|
| 返回值 | void | 无。 |
|
|
|
|
|
| array | array\_t* | 数组对象。 |
|
2018-12-21 18:29:29 +08:00
|
|
|
|
#### array\_find 函数
|
|
|
|
|
-----------------------
|
|
|
|
|
|
2018-12-21 11:39:05 +08:00
|
|
|
|
* 函数功能:
|
|
|
|
|
|
2018-12-21 18:29:29 +08:00
|
|
|
|
> <p id="array_t_array_find"> 查找第一个满足条件的元素。
|
2018-12-20 17:33:31 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-12-21 11:39:05 +08:00
|
|
|
|
* 函数原型:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
void* array_find (array_t* array, tk_compare_t cmp, void* ctx);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
* 参数说明:
|
|
|
|
|
|
2018-12-20 17:33:31 +08:00
|
|
|
|
| 参数 | 类型 | 说明 |
|
|
|
|
|
| -------- | ----- | --------- |
|
|
|
|
|
| 返回值 | void* | 如果找到,返回满足条件的对象,否则返回NULL。 |
|
|
|
|
|
| array | array\_t* | 数组对象。 |
|
|
|
|
|
| cmp | tk\_compare\_t | 比较函数,为NULL时直接比较指针。 |
|
|
|
|
|
| ctx | void* | 比较函数的上下文。 |
|
2018-12-21 18:29:29 +08:00
|
|
|
|
#### array\_find\_index 函数
|
|
|
|
|
-----------------------
|
|
|
|
|
|
2018-12-21 11:39:05 +08:00
|
|
|
|
* 函数功能:
|
|
|
|
|
|
2018-12-21 18:29:29 +08:00
|
|
|
|
> <p id="array_t_array_find_index"> 查找第一个满足条件的元素,并返回位置。
|
2018-12-20 17:33:31 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-12-21 11:39:05 +08:00
|
|
|
|
* 函数原型:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
int array_find_index (array_t* array, tk_compare_t cmp, void* ctx);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
* 参数说明:
|
|
|
|
|
|
2018-12-20 17:33:31 +08:00
|
|
|
|
| 参数 | 类型 | 说明 |
|
|
|
|
|
| -------- | ----- | --------- |
|
|
|
|
|
| 返回值 | int | 如果找到,返回满足条件的对象的位置,否则返回-1。 |
|
|
|
|
|
| array | array\_t* | 数组对象。 |
|
|
|
|
|
| cmp | tk\_compare\_t | 比较函数,为NULL时直接比较指针。 |
|
|
|
|
|
| ctx | void* | 比较函数的上下文。 |
|
2018-12-21 18:29:29 +08:00
|
|
|
|
#### array\_init 函数
|
|
|
|
|
-----------------------
|
|
|
|
|
|
2018-12-21 11:39:05 +08:00
|
|
|
|
* 函数功能:
|
|
|
|
|
|
2018-12-21 18:29:29 +08:00
|
|
|
|
> <p id="array_t_array_init"> 初始化array对象
|
2018-12-20 17:33:31 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-12-21 11:39:05 +08:00
|
|
|
|
* 函数原型:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
array_t* array_init (array_t* array, uint16_t* capacity);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
* 参数说明:
|
|
|
|
|
|
2018-12-20 17:33:31 +08:00
|
|
|
|
| 参数 | 类型 | 说明 |
|
|
|
|
|
| -------- | ----- | --------- |
|
|
|
|
|
| 返回值 | array\_t* | 数组对象。 |
|
|
|
|
|
| array | array\_t* | 数组对象。 |
|
|
|
|
|
| capacity | uint16\_t* | 数组的初始容量。 |
|
2018-12-21 18:29:29 +08:00
|
|
|
|
#### array\_pop 函数
|
|
|
|
|
-----------------------
|
|
|
|
|
|
2018-12-21 11:39:05 +08:00
|
|
|
|
* 函数功能:
|
|
|
|
|
|
2018-12-21 18:29:29 +08:00
|
|
|
|
> <p id="array_t_array_pop"> 弹出最后一个元素。
|
2018-12-20 17:33:31 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-12-21 11:39:05 +08:00
|
|
|
|
* 函数原型:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
void* array_pop (array_t* array);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
* 参数说明:
|
|
|
|
|
|
2018-12-20 17:33:31 +08:00
|
|
|
|
| 参数 | 类型 | 说明 |
|
|
|
|
|
| -------- | ----- | --------- |
|
|
|
|
|
| 返回值 | void* | 成功返回最后一个元素,失败返回NULL。 |
|
|
|
|
|
| array | array\_t* | 数组对象。 |
|
2018-12-21 18:29:29 +08:00
|
|
|
|
#### array\_push 函数
|
|
|
|
|
-----------------------
|
|
|
|
|
|
2018-12-21 11:39:05 +08:00
|
|
|
|
* 函数功能:
|
|
|
|
|
|
2018-12-21 18:29:29 +08:00
|
|
|
|
> <p id="array_t_array_push"> 在尾巴追加一个元素。
|
2018-12-20 17:33:31 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-12-21 11:39:05 +08:00
|
|
|
|
* 函数原型:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
ret_t array_push (array_t* array, void* data);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
* 参数说明:
|
|
|
|
|
|
2018-12-20 17:33:31 +08:00
|
|
|
|
| 参数 | 类型 | 说明 |
|
|
|
|
|
| -------- | ----- | --------- |
|
|
|
|
|
| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
|
|
|
|
|
| array | array\_t* | 数组对象。 |
|
|
|
|
|
| data | void* | 待追加的元素。 |
|
2018-12-21 18:29:29 +08:00
|
|
|
|
#### array\_remove 函数
|
|
|
|
|
-----------------------
|
|
|
|
|
|
2018-12-21 11:39:05 +08:00
|
|
|
|
* 函数功能:
|
|
|
|
|
|
2018-12-21 18:29:29 +08:00
|
|
|
|
> <p id="array_t_array_remove"> 删除第一个满足条件的元素。
|
2018-12-20 17:33:31 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-12-21 11:39:05 +08:00
|
|
|
|
* 函数原型:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
ret_t array_remove (array_t* array, tk_compare_t cmp, void* ctx, tk_destroy_t destroy);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
* 参数说明:
|
|
|
|
|
|
2018-12-20 17:33:31 +08:00
|
|
|
|
| 参数 | 类型 | 说明 |
|
|
|
|
|
| -------- | ----- | --------- |
|
|
|
|
|
| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
|
|
|
|
|
| array | array\_t* | 数组对象。 |
|
|
|
|
|
| cmp | tk\_compare\_t | 比较函数,为NULL时直接比较指针。 |
|
|
|
|
|
| ctx | void* | 比较函数的上下文。 |
|
|
|
|
|
| destroy | tk\_destroy\_t | 销毁元素的回调函数。 |
|
2018-12-21 18:29:29 +08:00
|
|
|
|
#### array\_remove\_all 函数
|
|
|
|
|
-----------------------
|
|
|
|
|
|
2018-12-21 11:39:05 +08:00
|
|
|
|
* 函数功能:
|
|
|
|
|
|
2018-12-21 18:29:29 +08:00
|
|
|
|
> <p id="array_t_array_remove_all"> 删除全部满足条件的元素。
|
2018-12-20 17:33:31 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-12-21 11:39:05 +08:00
|
|
|
|
* 函数原型:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
ret_t array_remove_all (array_t* array, tk_compare_t cmp, void* ctx, tk_destroy_t destroy);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
* 参数说明:
|
|
|
|
|
|
2018-12-20 17:33:31 +08:00
|
|
|
|
| 参数 | 类型 | 说明 |
|
|
|
|
|
| -------- | ----- | --------- |
|
|
|
|
|
| 返回值 | ret\_t | 返回RET\_OK表示成功,否则表示失败。 |
|
|
|
|
|
| array | array\_t* | 数组对象。 |
|
|
|
|
|
| cmp | tk\_compare\_t | 比较函数,为NULL时直接比较指针。 |
|
|
|
|
|
| ctx | void* | 比较函数的上下文。 |
|
|
|
|
|
| destroy | tk\_destroy\_t | 销毁元素的回调函数。 |
|
|
|
|
|
#### capacity 属性
|
|
|
|
|
-----------------------
|
2018-12-21 11:39:05 +08:00
|
|
|
|
> <p id="array_t_capacity"> 数组的容量大小。
|
2018-12-20 17:33:31 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* 类型:uint16\_t
|
|
|
|
|
|
|
|
|
|
| 特性 | 是否支持 |
|
|
|
|
|
| -------- | ----- |
|
|
|
|
|
| 可直接读取 | 是 |
|
|
|
|
|
| 可直接修改 | 否 |
|
|
|
|
|
#### elms 属性
|
|
|
|
|
-----------------------
|
2018-12-21 11:39:05 +08:00
|
|
|
|
> <p id="array_t_elms"> 数组中的元素。
|
2018-12-20 17:33:31 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* 类型:void**
|
|
|
|
|
|
|
|
|
|
| 特性 | 是否支持 |
|
|
|
|
|
| -------- | ----- |
|
|
|
|
|
| 可直接读取 | 是 |
|
|
|
|
|
| 可直接修改 | 否 |
|
|
|
|
|
#### size 属性
|
|
|
|
|
-----------------------
|
2018-12-21 11:39:05 +08:00
|
|
|
|
> <p id="array_t_size"> 数组中元素的个数。
|
2018-12-20 17:33:31 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* 类型:uint16\_t
|
|
|
|
|
|
|
|
|
|
| 特性 | 是否支持 |
|
|
|
|
|
| -------- | ----- |
|
|
|
|
|
| 可直接读取 | 是 |
|
|
|
|
|
| 可直接修改 | 否 |
|