stone12132e12e32 2015-08-24 08:04 采纳率: 0%
浏览 1950

STL中multimap关于find函数的问题

最近在看STL源码剖析,然后也刷了一下关于使用容器的一些题,发现一个关于multimap的一个问题想不通,大家都知道multimap是允许有重复键值,底层是通过红黑树来实现的,对于一个全是重复元素的multimap使用find函数查找,为什么find函数总能返回插入顺序中的第一个key值?
测试代码如下:
void main()
{
multimap test;
multimap::iterator pt;
for (int i = 0; i < 5; i++) //插入5个key为1的键值对,然后用second记录i,代表插入的顺序;
test.insert(make_pair(1,i));
for (int i = 0; i < 5; i++)
{
pt = test.find(1); //输出每次查找到的1的插入顺序;
cout << (*pt).second << " ";
test.erase(pt);
}
}

输出结果为:
图片说明

我想在建立这个红黑树的时候,根据STL中的insert_equal()函数,遇“大”则往左,遇“小于或等于”则往右,所以每次都插入1的时候应该都是往右插入,这时肯定会遇到不符合红黑树性质的情况,就得调整红黑树,得到最后的红黑树,在find查找时,根据二叉搜索树的方式,找到满足条件的第一个节点为什么就一定能保证是插入时的第一个呢???

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-20 21:09
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题