gpt4 book ai didi

c++ - 是否可以直接访问 multimap 中的位置(不是键)

转载 作者:行者123 更新时间:2023-11-30 01:19:37 26 4
gpt4 key购买 nike

问题:如何在不循环的情况下访问键范围内指定位置的值?
我知道获取此数据的唯一可能方法是递增迭代器,但是很多时候该位置是从键范围的开头或结尾开始的。

编辑 我不愿意使用循环的原因是当值在索引中的位置已知时,通过获取所需的值来减少处理时间。

最佳答案

如评论中所述,您基本上不能在 multimap 上执行此操作。或者在 map 上。或者在任何不支持随机访问的容器上。对“为什么我不能这样做?”这个问题的简单回答。是“因为它不在界面中”。

较长的答案需要对不同容器的实现有最低限度的了解。因此,vector 的元素存储在内存中。知道第 i 个元素的地址,您可以添加 k 并获取第 i+k 个元素的地址。

map (和多 map )是不同的。为了允许一种有效的关联访问方式,他们使用某种树作为底层数据结构。最简单的是二叉搜索树。并且树的所有节点都分配在堆中。在实际访问它们之前,您不知道在哪里。但是你只能通过其他节点访问一个节点。

您可以做的是遍历所有元素并将它们的地址存储在一个 vector 中,这样它们现在就可以“随机”访问了。但是,一旦添加新元素或从 map 中删除元素,此 vector 就会失效。没有神奇的数据结构可以让您同时进行有效的关联访问和随机访问。

关于c++ - 是否可以直接访问 multimap 中的位置(不是键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20626846/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com