用数组模拟链表比指针实现的链表有何优势
在竞赛里,如果数据范围不大,那么用数组模拟的链表中的「指针」可以用 2 字节甚至 1 字节来实现,与真正的指针(通常为 4 字节)相比至少省一半内存。
【用数组模拟链表比指针实现的链表有何优势】 当然,这个好处一般也只有在竞赛的时候有用。
■网友
数组链表相当于自己实现一个简易的 memory allocator,没太大差别
■网友
相当于做了内存池
■网友
cache比较友好
■网友
可以避免为每个节点单独分配堆内存,which is a time-consuming operation. 另外数据储存位置比较集中,有利于避免cache miss. 运行速度快一些。缺点也很明显,可读性、扩展性很差。
■网友
如果题主指的是,使用bitmap或单链表实现一个allocator管理数组索引,可以在常数时间分配或回收(反之,调用malloc或free需要进入内核态),以及方便的引入一级缓存(用于缓存已释放的但是以后还可能用到的节点)。如果节点的size是固定的,这样做也可以减少内存碎片。
■网友
可以实现一个where函数,已知元素的指针求其在链表数组中的位置。不过没什么用,就是在range for中获取索引而已。
■网友
真正的鏈表在內存中是不連續的,對 CPU 的緩存不友好,沒辦法有效地預讀。lz 可以用 C++ 把兩種鏈表都寫一下,測一測時間,同樣的長度,歷遍的時間應該相差數倍。
■网友
操作系统帮你管理数组下标和你自己管理的区别
■网友
有的编程语言不支持指针和引用。另外可能销毁链表变得更容易了?因为数据实际上都在一块内存里。
推荐阅读
- 关于用phpfsocket 写Post, 模拟http 报文怎样写入要传输的处理数据
- C语言 指针引用数组的地址问题
- 环球车讯网|科二和科三的模拟考试,成为过关“技巧”,有必要花这个钱吗?
- 高考|重磅! 教育部命题! 2021新高考官方模拟考时间确定! 连考3天, 统一改卷!
- C语言多维数组声明调用和c为啥差别这么大
- 有啥比较好的物理运动模拟软件,解决简单运动学问题
- 高考|重磅! 教育部命题! 2021高考官方模拟考时间确定! 连考3天, 统一改卷!
- cookie模拟登陆新浪微博出现跳转页面重定向怎样解决?
- 沅江市|“亿元局长”终审获刑16年半 曾模拟审讯实战演练
- node模拟登录之后,咋继续请求登录成功之后的页面
