提问人:DarkSide77 提问时间:3/3/2022 更新时间:3/3/2022 访问量:108
在 C++ 中插入 map 究竟是如何工作的?
how exactly insert of map exactly work in c++?
问:
我正在尝试自己在 c++ 中重新实现地图容器,但我被困在该方法中。insert
注意:我知道地图使用自平衡树(红黑树),所以当你插入一个新元素时,你需要遵守二叉搜索树规则。
现在我的问题是:
(C++98) 中的映射有 3 个插入成员函数
single element (1) pair<iterator,bool> insert (const value_type& val);
with hint (2) iterator insert (iterator position, const value_type& val);
range (3) template <class InputIterator>
void insert (InputIterator first, InputIterator last);
单个元素 (1) 是明确的。
但第二个不是。
我想知道提示是如何使用的,我如何检查给我的位置是否尊重树的规则,以及如何修复它。
注2:这是基于c++98,我知道这在C++11中发生了变化。
答:
0赞
Caleth
3/3/2022
#1
当提示正确时,提示重载具有更严格的复杂性要求。如果提示不正确,则忽略它。
复杂性
如果插入发生在提示之后的位置,则摊销常数,容器大小的对数 否则。
如果您已经知道(甚至有一个很好的猜测)要插入的值应该放在哪里,例如,您正在插入一系列已经排序的值,则可以使用提示重载作为优化。
评论
std::map