数组
数组是很常用的一种数据结构,我们在开发中都会使用到这个数据结构。
数组中的数据为何能够随机访问?
数组是一种线性表结构,用来存放相同类型的一组数据。数组在内存中是一块连续的区间,可以通过下标来随机访问数组中的数据。
插入和删除的时间复杂度
数组的插入操作平均时间复杂度为O(n),删除操作平均时间复杂度为O(n)
数组的访问越界会引起什么问题?
如果语言本身不对数组做越界检查,那么数组通过越界访问会得到不确定的结果,如果在函数调用的时候进行数据的越界覆盖,会产生缓冲区溢出的漏洞。
容器能否完全替代数组?
很多容器都提供了容器类,这些容器类封装了数组的很多操作细节,还能够支持动态扩容,比如Java的ArrayList、Python的list。
如果对性能要求不是十分苛刻的情况下,完全可以使用容器就够了。如果对性能要求很苛刻,那么优先使用数组优先于容器,因为容器的动态扩容会有性能的损失。