【发布时间】:2011-09-22 09:49:56
【问题描述】:
我需要将值插入到任何空闲位置的 std::map (或等效的)中,然后获取它的键(稍后删除/修改)。比如:
std::map<int, std::string> myMap;
const int key = myMap.insert("hello");
是否可以使用 std::map 这样做,或者是否有一些合适的容器?
谢谢。
【问题讨论】:
-
我不认为 std::map 是您想要实现的目标的正确选择。你想做什么?将没有关联键的对象添加到字典中是没有意义的。
-
这不是它的工作原理...
map,通常被实现为 RB 树,没有与任何空闲槽关联的“默认密钥”。你到底想达到什么目的? -
可能您正在寻找哈希函数 - 搜索有关此主题的信息。
-
@Matteo Italia,我需要经常在任何数组中插入/更新/删除对象的方法。我认为 std::map 的(有序树?)实现可以找到一些未占用的键 - 不是吗?
-
@Slav:不,它不是这样工作的。地图中没有“未占用的键”。当地图没有某个键的数据时,它也没有该键本身的数据。当您有一个空的
map<uint32_t>时,您有超过 40 亿个“未占用的键”...