STL中map使用问题

RuleSoft 2011-10-20 02:56:45
最近在学STL,在map和multimap部分遇到一个问题,使用insert(interator _Where,const value_type& _Val)之后,发现输出的结果并不是自己所期望的,请高手指教:
#include <map>
#include <iostream>
using namespace std;
int main()
{
map <int,int>::iterator m1_pIter;
map <int,int> m1;
typedef pair <int,int> Int_Pair;
m1.insert(Int_Pair(1,10));
m1.insert(Int_Pair(2,20));
m1.insert(Int_Pair(3,30));
m1.insert(Int_Pair(4,40));
m1_pIter=m1.begin();
m1_pIter++;
m1.insert(m1_pIter,Int_Pair(5,50));
cout<<"The Key values of m1 is:";
for(m1_pIter=m1.begin();m1_pIter!=m1.end();m1_pIter++){
cout<<m1_pIter->first;
}
}

结果为The Key values of m1 is:12345,而我觉得应该是The Key values of m1 is:15234;
(使用minGW G++编译)
...全文
93 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
RuleSoft 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 eckael 的回复:]
貌似内部会按key自动排序
[/Quote]
刚使用m1.insert(m1_pIter,Int_Pair(0,50))测试了一下,果然是会自动排序,输出结果为01234;

那interator在insert时好像就没什么作用了。
翻越寒武 2011-10-20
  • 打赏
  • 举报
回复
貌似内部会按key自动排序
luciferisnotsatan 2011-10-20
  • 打赏
  • 举报
回复
map是红黑树结构,已序的。从begin遍历到end,当然是12345

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧