【发布时间】:2017-04-17 11:29:39
【问题描述】:
在我的日常工作中,团队的高级成员总是建议我列表不是缓存友好的,所以我应该vector。我了解list 不是连续的,因此内存分配分散在整个内存中。
但是,我经常需要list(或map)的功能。所以我想知道我是否可以编写自己的分配器,即下面的vector。每次我push_back 时,我自己的分配器都会从每个分配的vector 中分配一个新项目。
当我前往list/map 时,缓存位置被保留。
这对你们中的任何人有意义吗?
【问题讨论】:
-
std::list不是关联容器。 -
您正在寻找的称为堆栈分配器
-
显而易见的问题:为什么不直接使用
vector?这个结构给你什么vector没有?如果您尝试使用通常在list上比在vector上更有效的任何功能,您将泄漏内存。 -
我有一个大致固定大小的列表,我经常需要在其中插入/擦除,我认为这不能轻易被向量替换
-
做一些基准测试。对于 500,000 个元素,执行随机插入删除的列表(和映射)。