动态数组
动态数组 | |
---|---|
术语名称 | 动态数组 |
英语名称 | dynamic array |
别名 | 变长数组, resizable array, growable array, array list |
动态数组(dynamic array)或变长数组(resizable array)指逻辑结构为线性表、存储结构为数组,且数组长度可变的数据结构。
在编程语言中,动态数组可能被实现为基本的数组类型。动态数组通常涉及内存的动态分配、移动和动态释放,因此被称为动态数组。本质上,动态数组和静态数组的区分是其是否涉及动态内存操作。即使长度不进行变更,如果数组长度编译时未知,涉及运行期重新分配,也视为不太典型的动态数组;相反,尽管很难举出实例,编译时预设最大长度,运行期修改其使用范围,则可以视为不太典型的静态数组。
语言实例
动态数组 | |||
---|---|---|---|
语言 | 版本/库 | 对应内容 | 说明 |
C | C89 | 包括三种:
|
标准库及语法规则 |
C++ | C++98 | std::vector
|
STL |
实现实例
libcxx: libc/src/__support/CPP/array.h
libstdc++: libstdc++-v3/include/std/array
GSSDS 定义
GSSDS: array/include/sds/dynamic_array/dynamic_array.h
特殊操作算法
由于数组存储方式有长度和索引,能够快速确认每个元素的位置,其获取可以在常数时间内完成,但是插入和删除则需要较复杂的操作,见数组的插入、删除。