用到map,但是不太会用,trans_map.insert(make_pair(strK,strV));是插入2个值得吧,MSDN上说它可以支持任意类型的数据,为什么我用了2个字符串数组,就出来下边这些毛病呢?
error C2664: '__thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(const class std
::allocator<char> &)' : cannot convert parameter 1 from 'const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > [5]' to 'const class std::allocator<char> &'
        Reason: cannot convert from 'const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > [5]' to 'const class std::allocator<char>'
        No constructor could take the source type, or constructor overload resolution was ambiguous
        e:\graduation project\hashtest\graduationprogram3\graduationprogramdlg.cpp(208) : see reference to function template instantiation '__thiscall std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > 
const ,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >::std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class std::basic_string<char,struct std::char_
traits<char>,class std::allocator<char> > >(const struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > [5],class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > [5
]> &)' being compiled
d:\program files\vc98\include\utility(23) : error C2664: '__thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(const class std
::allocator<char> &)' : cannot convert parameter 1 from 'const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > [5]' to 'const class std::allocator<char> &'
        Reason: cannot convert from 'const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > [5]' to 'const class std::allocator<char>'
        No constructor could take the source type, or constructor overload resolution was ambiguous
        e:\graduation project\hashtest\graduationprogram3\graduationprogramdlg.cpp(208) : see reference to function template instantiation '__thiscall std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > 
const ,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >::std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class std::basic_string<char,struct std::char_
traits<char>,class std::allocator<char> > >(const struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > [5],class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > [5
]> &)' being compiled
执行 cl.exe 时出错.

解决方案 »

  1.   

    trans_map 是如何定义的?
      

  2.   

    map<string,string> trans_map;
      

  3.   

    trans_map.insert(pair<string, string>(strK,strV)); Or
    trans_map.insert(make_pair<string, string>(strK,strV));
      

  4.   

    在我的机器上编译没问题,vs2008
    string strk = "1";
    string strt = "2";
    map<string,string> trans_map;
    trans_map.insert(make_pair(strk,strt));
      

  5.   

    map <string, string> arrStuInfo;
    string strID = "001",
           strName = "stu1";
    arrStuInfo.insert(make_pair<string, string>(strID, strName));