动态数组
动态数组是下一个逻辑扩展<一个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 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
# include