gpt4 book ai didi

c++ - 快速查找的C++列表

转载 作者:行者123 更新时间:2023-12-03 07:09:43 29 4
gpt4 key购买 nike

我正在使用std::list
元素以“插入顺序”出现在列表中,而不是根据元素的值。
在对元素进行std::find()编码时,必须搜索整个列表。
为了加快从O(n)到O(log(n))的“查找”,我自己可以实现一个哈希映射来存储std::list元素的位置,或者我可以使用boost多索引https://www.boost.org/doc/libs/release/libs/multi_index/doc/tutorial/basics.html#list_fast_lookup
问题:今天,在C++ 17中,是否存在一种标准/通用或最佳实践的方法来实现具有列表加快速find(例如remove)的所有属性的容器?还是这样的容器类型已经存在?也许是C++ 20?
Edit / Nb:列表中元素的顺序是相关的,因此不能直接使用std::map。

最佳答案

由于std::list的迭代器在插入和删除期间仍然有效(当然,除了删除的元素外),因此您可以维护std::map <my_key, my_list_iterator>类型的secondaray数据结构(或者更合适的std::unordered_map)。
然后,无论何时添加或删除列表条目,对std::map / unordered_map执行相同的操作即可完成。当然,您可以使用O(log(n))(或O(1))复杂度进行搜索。

关于c++ - 快速查找的C++列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64538696/

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