(VC++编译器) map 的四种插入数据的方法中,为什么make_pair不好用?

redkey_919 2003-01-10 12:05:25
#include <iostream>
#include <map>
#include <string>
using namespace std;

int main()
{
typedef map<string,float> StringFloatMap;

StringFloatMap coll;

coll["a"] = 1;
coll.insert(map<string,float>::value_type("b",2));
coll.insert(pair<string,float>("c",3));
// coll.insert(make_pair("d",4));

map<string, float>::iterator pos;

for (pos = coll.begin();pos != coll.end();++pos)
{
cout << pos->second << endl;
}

return 0;
}
...全文
69 点赞 收藏 3
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
liu_feng_fly 2003-01-10
coll.insert(make_pair("d",4));
写成
coll.insert(make_pair(string("d"),4));
试试
回复
J2eeLearner 2003-01-10
查了一下,是编译器的错!
回复
J2eeLearner 2003-01-10
coll.insert(make_pair("d",4));
//
查找源代码:
template <class _T1, class _T2>
inline pair<_T1, _T2> make_pair(const _T1& __x, const _T2& __y)
{
return pair<_T1, _T2>(__x, __y);
}

你这里的make_pair的_T1 相当于 (char *) ,和coll的元素pair<string,float> 不兼容!
回复
发动态
发帖子
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
社区公告
暂无公告