动态数组
的下一个逻辑扩展是动态数组<一个href="//www.parkandroid.com/wiki/arrays/" class="wiki_link" title="数组"t一个rget="_blank">数组 例如,如果你想创建一个程序来记录你一天中吃的所有东西,你需要使用一个动态的数据结构(一个可以在程序执行期间增长和收缩的数据结构)。它需要有活力,因为你不知道你一天会吃多少不同的东西。无论何时吃东西,只需将食物的名称附加到动态数据结构的末尾。在这里,动态数组是一个不错的选择。
动态数组的属性
动态数组在程序执行期间为程序员提供了更大的灵活性。与正常<一个href="//www.parkandroid.com/wiki/arrays/" class="wiki_link" title="数组"t一个rget="_blank">数组 动态数组通常使用两倍于初始数组元素数量的数组初始化。这个额外的空间允许向数组中添加额外的元素。如果我想创建一个包含以下元素的动态数组, 当数组的大小需要加倍时,首先复制原始数组。然后程序找到一个新的、更大的连续内存区域。然后,它在连续的空间中创建一个新的双大数组,并将原始数组保存为新数组的前半部分。 下图显示了这个过程。动态数组初始化时只有一个值2。然后添加强制动态数组增长的值。数组的总大小通常称为<年代trong>能力
示例C实现
这个示例实现使用 由于项的大小直到运行时才知道,因此有必要将指向正在读取和写入数组的值的指针传入数组。这是c++真正闪耀的地方。使用模板,可以在编译时知道大小,并使用操作符重载标准 DynamicArray.h DynamicArray.c
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
的ifndef DynamicArray_h
12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
# include