(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;
}
...全文
117 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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> 不兼容!

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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