看看这个错误怎么修改?

markfilan 2010-07-31 02:54:50
#include<map>
#include<vector>
#include<string>
#include<iostream>
#include<utility>
using namespace std;
int main()
{
typedef pair<string,string> child;
typedef vector<child> children;
typedef string surname;
map<surname,children> family;
family["a"].push_back("a1");
family["b"].push_back("b1");
family["b"].push_back("b2");
family["c"].push_back("c1");
family["c"].push_back("c2");
family["c"].push_back("c3");
family["d"].push_back("d1");
family["d"].push_back("d2");
family["d"].push_back("d3");
family["d"].push_back("d4");
family["e"].push_back("e1");
family["e"].push_back("e2");
family["e"].push_back("e3");
family["f"].push_back("f1");
family["f"].push_back("f2");
family["g"].push_back("g1");
family["a"].push_back(make_pair(string("a1"),string("01/02")));
family["b"].push_back(make_pair(string("b1"),string("02/02")));
family["b"].push_back(make_pair(string("b2"),string("03/03")));
family["c"].push_back(make_pair(string("c1"),string("04/04")));
family["c"].push_back(make_pair(string("c2"),string("05/05")));
family["c"].push_back(make_pair(string("c3"),string("06/06")));
map<surname,children>::iterator mi;
children::iterator vi;
string s;
for(mi=family.begin();mi!=family.end();++mi)
{
s=mi->first;
cout<<s<<endl;
for(vi=mi->second.begin();vi!=mi->second.end();++vi)
cout<<s<<"\t"<<vi->first<<"\t"<<vi->second<<endl;
}
string name;
cout<<"Please enter family name:";
cin>>name;
while(!name.empty())
{
cout<<name<<endl;
for(vi = family[name].begin();vi!=family[name].end();++vi)
{
cout<<name<<"\t"<<*vi<<endl;
cout<<"Please enter family name:";
cin>>name;
}
}
return 0;
}C:\Documents and Settings\Administrator\my.cpp(53) : error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,cl
ass std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >' (or there is no acceptable conversion)
执行 cl.exe 时出错.
这个错误怎么办?
报错:
...全文
87 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
markfilan 2010-07-31
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 namelij 的回复:]

引用 11 楼 markfilan 的回复:
好像fitrst和second后面不用括号。

对不起,可能我记错了,误解你了
[/Quote]
呵呵,没关系的,你帮我很大的忙了。
markfilan 2010-07-31
  • 打赏
  • 举报
回复
td::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
>'
No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Documents and Settings\Administrator\my.cpp(23) : error C2664: 'push_back' : cannot convert parameter 1 from 'char [3]' to 'const struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::
basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > &'
Reason: cannot convert from 'char [3]' to 'const struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
>'
No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Documents and Settings\Administrator\my.cpp(24) : error C2664: 'push_back' : cannot convert parameter 1 from 'char [3]' to 'const struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::
basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > &'
Reason: cannot convert from 'char [3]' to 'const struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
>'
No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Documents and Settings\Administrator\my.cpp(25) : error C2664: 'push_back' : cannot convert parameter 1 from 'char [3]' to 'const struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::
basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > &'
Reason: cannot convert from 'char [3]' to 'const struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
>'
No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Documents and Settings\Administrator\my.cpp(26) : error C2664: 'push_back' : cannot convert parameter 1 from 'char [3]' to 'const struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::
basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > &'
Reason: cannot convert from 'char [3]' to 'const struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
>'
No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Documents and Settings\Administrator\my.cpp(27) : error C2664: 'push_back' : cannot convert parameter 1 from 'char [3]' to 'const struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::
basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > &'
Reason: cannot convert from 'char [3]' to 'const struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
>'
No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Documents and Settings\Administrator\my.cpp(28) : error C2664: 'push_back' : cannot convert parameter 1 from 'char [3]' to 'const struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::
basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > &'
Reason: cannot convert from 'char [3]' to 'const struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
>'
No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Documents and Settings\Administrator\my.cpp(35) : warning C4786: 'std::_Tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,std::vector<st
d::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::ba
sic_string<char,std::char_traits<char>,std::allocator<char> > > > > >,std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::vector<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic
_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > >,std::less<std::basi
c_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::vector<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::alloc
ator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > > >::_Kfn,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >
,std::allocator<std::vector<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,
std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > > >::iterator' : identifier was truncated to '255' characters in the debug information
执行 cl.exe 时出错.
这是怎么回事?
markfilan 2010-07-31
  • 打赏
  • 举报
回复
这样改制后还有有错误,我现在的代码是这个样的:
#include<map>
#include<vector>
#include<string>
#include<iostream>
#include<utility>
using namespace std;
int main()
{
typedef pair<string,string> child;
typedef vector<child> children;
typedef string surname;
map<surname,children> family;
family["a"].push_back("a1");
family["b"].push_back("b1");
family["b"].push_back("b2");
family["c"].push_back("c1");
family["c"].push_back("c2");
family["c"].push_back("c3");
family["d"].push_back("d1");
family["d"].push_back("d2");
family["d"].push_back("d3");
family["d"].push_back("d4");
family["e"].push_back("e1");
family["e"].push_back("e2");
family["e"].push_back("e3");
family["f"].push_back("f1");
family["f"].push_back("f2");
family["g"].push_back("g1");
family["a"].push_back(make_pair("a1","01/02"));
family["b"].push_back(make_pair("b1","02/02"));
family["b"].push_back(make_pair("b2","03/03"));
family["c"].push_back(make_pair("c1","04/04"));
family["c"].push_back(make_pair("c2","05/05"));
family["c"].push_back(make_pair("c3","06/06"));
map<surname,children>::iterator mi;
children::iterator vi;
string s;
for(mi=family.begin();mi!=family.end();++mi)
{
s=mi->first;
cout<<s<<endl;
for(vi=mi->second.begin();vi!=mi->second.end();++vi)
cout<<s<<"\t"<<vi->first<<"\t"<<vi->second<<endl;
}
string name;
cout<<"Please enter family name:";
cin>>name;
while(!name.empty())
{
cout<<name<<endl;
for(vi = family[name].begin();vi!=family[name].end();++vi)
{
cout<<name<<"\t"<<vi->first<<" "<<vi->second<<endl;
cout<<"Please enter family name:";
cin>>name;
}
}
return 0;
}
报错是:

  • 打赏
  • 举报
回复
[Quote=引用 11 楼 markfilan 的回复:]
好像fitrst和second后面不用括号。
[/Quote]
对不起,可能我记错了,误解你了
markfilan 2010-07-31
  • 打赏
  • 举报
回复
好像fitrst和second后面不用括号。
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 markfilan 的回复:]
怎么重载?不会写。。。。。。
[/Quote]
如果不重载,你可以 cout << vi->first() << " " << vi->second();

不过,你前面的代码也有问题,我已经给你改正了
cunyan_0519 2010-07-31
  • 打赏
  • 举报
回复
顶下吧,搞bumingb
pengzhixi 2010-07-31
  • 打赏
  • 举报
回复
*vi 返回的是一个pair结构,这个是不能直接输出的。
markfilan 2010-07-31
  • 打赏
  • 举报
回复
怎么重载?不会写。。。。。。
pengzhixi 2010-07-31
  • 打赏
  • 举报
回复
看错了,以为child是一个类
  • 打赏
  • 举报
回复
我找的别的错误

或者 first second也可以删除
pengzhixi 2010-07-31
  • 打赏
  • 举报
回复
为child重载一个<<
  • 打赏
  • 举报
回复
看错了

因为你的value是一个child,所以后面应该是child类型

family["a"].push_back(make_pair("a1", "a2"));
  • 打赏
  • 举报
回复
或者 family["a"] = "dwe";

楼主还是看看map相关内容吧
  • 打赏
  • 举报
回复
family.insert(make_pair("b", "a"));

64,439

社区成员

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

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