当前位置: 首页 > 知识库问答 >
问题:

是否有任何类似列表的结构允许在任意索引处插入,同时保持缓存效率?

麹飞航
2023-03-14

向量具有良好的缓存效率(索引接近的元素在内存中放置得很近),但对于任意位置的插入效率低下。列表在任意位置插入了O(1)(只要您知道该位置的地址),但它们具有可怕的缓存效率(元素在堆中随机分布)。

有没有在索引中插入了< code>O(1)的数据结构,可以将具有近索引的元素放在内存的近位置?

共有3个答案

宁修永
2023-03-14

看看d::deque。它混合了向量和列表的属性。我相信它是像列表一样实现的,但是它不是每次分配一个节点,而是分配固定数量的节点。

公羊晟
2023-03-14

你不能同时有最坏情况下的O(1)随机访问插入和具有相似索引的元素的搭配。如果具有相似索引的元素必须位于彼此的O(1)个单位内,那么你总是可以在同一位置插入足够多的元素,以便下一次插入迫使O(n)个其他元素移动。事实上,你需要插入的元素数量是O(1)(因为附近元素之间的行间距也是如此)。

陆城
2023-03-14

将列表元素放置在附近通常不是结构(矢量、列表)作业,而是分配器作业

元素随机分布在堆中

对于不在堆中随机分布的元素,必须使用池或固定大小的块分配

 类似资料:
  • 我正在使用Amazon的DynamoDBMapperJava类将数据保存到DynamoDB表中。该代码需要以多种不同的方式对数据进行结构化处理,因此我不想编写特定于结构的代码。出于这个原因,我将代码存储为Java的JSON对象——基本上是荣耀的HashMaps。 我想将这些JSON对象作为Dynamo相对较新的JSON文档类型存储到Dynamo中。 DynamoDBMapper API的工作方式基

  • 我读到了关于和的相互矛盾的语句。 这个答案说: 使用must-revalidate时,如果服务器不响应重新验证请求,浏览器/代理应该返回504错误。在没有缓存的情况下,它只显示缓存的内容 然而,“只显示缓存的内容”而不进行重新验证与https://datatracker.ietf.org/doc/html/RFC7234#section-5.2.1.4中的内容相矛盾: “no-cache”requ

  • 我有一个表,其列如下所示: 符号 区域 国家 位置 日期 计数 我创建了如下表: null 简单地说,我想要支持where子句中所有或任意数量列的表结构。 在卡桑德拉有可能做到这一点吗?

  • 问题内容: 您好,我正在命令行应用程序上工作,它可以接受命令行参数,例如 我正在寻找可以返回我对选项及其对应值的函数,例如c中的getopt。 问题答案: 那里有很多针对Java的命令行解析器库。 picocli是最近(截至2019年末)具有许多功能和特性的命令行解析器。 一些较老的流行类是commons- cli (相当古老),args4j和JCommander。

  • 问题内容: 我正在尝试编写一个可以处理json响应的结构类型 由于键每次都不相同…不同的响应可能包含或多或少的键,不同的键,如您所见,使用50x100返回特定大小的多个图像,我如何创建与此匹配的结构? 我可以这样: 用于单个项目,以及用于特定键的列表。但是包含的结构看起来如何? 就像是: 可能有效,但我无法列举所有可能的图像尺寸响应。另外,Image_Urls末尾没有真正的列表。我希望能够将其直接

  • 我在尝试在父表(DART\U ORDER)中插入1条记录,在连接到父表(DART\U ODATE)的子表中插入2条记录时遇到问题。这两个表由一对多对一关系链接,如下所示: 当我尝试保存提供完整OrderDAO对象的记录时,会出现以下异常: 原因:java。sql。SQLException:oracle中的列索引无效。jdbc。驾驶员OraclePreparedStatement。oracle上的s