首页
社区
课程
招聘
[讨论]有关stl中vector跟map的一点疑惑。。莫非需要看stl源码才能回答?
发表于: 2011-9-28 18:22 5883

[讨论]有关stl中vector跟map的一点疑惑。。莫非需要看stl源码才能回答?

2011-9-28 18:22
5883
vector<>::insert(p,e) p迭代器  e 元素
map<>::insert(p,e)  同样

vector<>::insert(p,e) 插入e到p的前面,返回指向e的迭代器
map<>::insert(p,e) 插入e到p的后面,返回指向e的迭代器
一个前面,一个后面
总感觉标准库怪怪的
都是insert,vector,map还不一样。。。。。
为啥不统一?
map::insert(p,e)插入e到p的前面,返回指向e的迭代器,这样不是很美好吗?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 270
活跃值: (97)
能力值: ( LV8,RANK:140 )
在线值:
发帖
回帖
粉丝
2
map是自动排序的好吧
vector是序列式容器,map是关联式容器
2011-9-28 18:47
0
雪    币: 204
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
看来楼上的正解
2011-9-28 18:54
0
雪    币: 1981
活跃值: (771)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
4
p 对 map 来说无意义,不会影响结果
2011-9-28 19:36
0
雪    币: 132
活跃值: (214)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
5
map是自动排序的跟这个问题好像没关系吧,4楼的观点:P对map没啥影响,既然没关系没影响,那让做法跟vector一样不好吗,起码方便大家去记忆,不容易搞混。但是事实上却不是这样,难道这点标准库的开发人员没想到。。。。。不可能吧,所以你回答的vector是顺序容器,map是关联容器应该还不算是答案吧。
2011-9-28 19:48
0
雪    币: 1981
活跃值: (771)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
6
map<>::insert(p,e) 插入e到p的后面,返回指向e的迭代器

你这句话不知道那里来的,p 根本就没有这个意思
2011-9-28 20:19
0
雪    币: 132
活跃值: (214)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
7
是这样的。我太一厢情愿了,是我的错。那请问标准库提供这个插入的意义是什么呢?想不太明白
2011-9-28 22:31
0
雪    币: 952
活跃值: (1821)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
应该是理解错误了 搜了下 map的insert 用法

void insert_map(map<string,int>& m,pair<string,int> item)
{
cout<<"执行插入操作,插入"<<'['<<item.first<<','<<item.second<<']';
pair<map<string,int>::iterator,bool> res=m.insert(item);//返回值是一个pair型,与multimap不同
if(res.second)
{
  cout<<"成功插入map中!";
}
else
{
  cout<<"map中已有"<<'['<<item.first<<','<<m[item.first]<<']';
}
map<string,int>::iterator it=res.first;
cout<<"insert返回值:"<<'['<<it->first<<','<<it->second<<']'<<endl;
}
2011-9-28 22:36
0
雪    币: 306
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
map的插入会进行排序。所以具体插入到哪里你是不知道的。所以你那句话, 说 map插入到p后面 是有错误的。 map和vector这种不同,,不同是因为内部算法和机制不同,这个不同是为了存储或者效率。
2011-9-29 09:46
0
雪    币: 359
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
std::map::insert(std::map::iterator p, std::map::value_type e)这个重载可以破坏map的排序结构,但是e还是插在p的前面,不知道你说他插到p的后面的结论是哪里来的?
2011-9-29 10:02
0
游客
登录 | 注册 方可回帖
返回
//