文章目录
前言
由于c语言没有集合类的标准库,需要用时只能自己实现,由于c语言没有泛型,使得实现的集合类接口通常比较另类,很多时候都需要二级指针作为参数,且不支持字面量作为参数,使用时心智负担较重。本文参考go语言的slice,找到了一种非常简化的动态数组接口,可以极大的方便使用。
一、接口定义
1、创建切片
指定元素类型,以及容量即可以创建切片,返回是一个数组
/// <summary>
/// 创建切片
/// </summary>
/// <param name="t">元素类型</param>
/// <param name="len">切片长度</param>
/// <param name="cap">[可选]切片容量,容量必须大于等于长度</param>
/// <returns>切片数组</returns>
#define make(...)
2、销毁切片
与go语言不同,c语言需要管理内存。用完后的切片需要销毁。
/// <summary>
/// 销毁切片
/// </summary>
/// <param name="a">切片数组</param>
#define unmake(a)
3、添加元素
可以添加元素也可以添加数组,数组长度会自动增长。
/// <summary>
/// 添加元素、数组
/// </summary>
/// <param name