gpt4 book ai didi

c++ - 标准要求 std::unordered_map 将键值对放在内存中吗?

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

C++ 标准是否强制要求符合要求的 std::unordered_map 将每个键和值放在内存中?

我认为答案是肯定的,因为大部分 std::unordered_map 都是根据 std::pair 指定的,而且我认为不需要隐藏的操作内存中不相交的键值对的细节可能会被完全隐藏,但我不确定。

最佳答案

标准要求 value_type对于 std::map::iteratorstd::pair<const key, T> ,因此(例如)当您使用迭代器遍历 map 时,每次取消引用迭代器时,您都会得到一个 pair<const key, T>。 .

该标准还要求(例如)emplace返回一个迭代器“到新插入的元素”。至少根据我的阅读,这意味着你不能让它彼此分开存储键和值,而只是(例如)将键/值复制到一个临时位置,这样它就可以返回一个指针/引用到那个按需定位。

后者会(例如)违反异常安全要求。它必须进行复制才能使集合中的元素可见,在不允许这样做的情况下,因为这样的复制可能会引发异常,但所讨论的函数不允许这样做(实际上,可以放置类型根本无法复制)。

关于c++ - 标准要求 std::unordered_map 将键值对放在内存中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34865362/

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