gpt4 book ai didi

c++ - 在 std::map 中查找不存在的键

转载 作者:太空狗 更新时间:2023-10-29 23:34:41 26 4
gpt4 key购买 nike

有没有办法在映射中找到不存在的键?

我正在使用 std::map<int,myclass> ,我想为新项目自动生成一个 key 。项目可能会按照与插入顺序不同的顺序从 map 中删除。

myclass 项可能相同,也可能不同,因此它们不能单独用作键。

在程序运行期间,生成和删除的项数没有限制,所以不能用计数器作为键。

可以使用具有相同功能和性能的替代数据结构。

编辑

我试图为我的项目构建一个容器 - 这样我就可以根据项目的键删除/修改项目,并且可以迭代这些项目。键值本身对我来说没有任何意义,但是,其他对象将存储这些键以供内部使用。

我不能使用增量计数器的原因是,在程序的生命周期中,它们可能超过 2^32(或理论上 2^64)个项目,但是理论上项目 0 可能仍然存在,即使在所有其他之后项目被删除。

最好向 std::map 询问最低值未使用的键,这样我就可以将它用于新项目,而不是对未使用的键使用 vector 或其他一些外部存储。

最佳答案

我建议结合使用计数器和队列。当您从 map 中删除一个项目时,将其键添加到队列中。然后队列会跟踪已从映射中删除的键,以便可以再次使用它们。要获得新 key ,您首先要检查队列是否为空。如果不是,弹出顶部索引并使用它,否则使用计数器获取下一个可用键。

关于c++ - 在 std::map 中查找不存在的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1810258/

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