为什么数组要从0开始编号
计算机会给每个内存单元分配一个地址,计算机通过地址来访问内存中的数据。当计算机需要随机访问数组中的某个元素时,她会首先通过下面的寻址公式,计算出该元素存储的内存地址。
a[i]_address = base_address + i data_type_size;
如果下标从1开始,那么寻址公式将会变为
a[i]_address = base_address + (i-1) data_type_size;
与下标从0开始,要多一次减法运算。
低效的删除
由于每次删除需要移动大量的数据,我们可以在删除的时候进行逻辑删除,当插入元素时数组空间不够。再把已标记删除的元素进行物理删除。
小心物理越界
容器能否代替数组
容器的优势就是封装了很多api,使用起来非常简单。也不用担心扩容 缩容的问题。
当然也有几种情况适合用数组,比如:
- 事先已经知道数组的大小,而且只需要进行非常简单的操作
- 表示多维数组是
