看看这个错误怎么修改?
#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 时出错.
这个错误怎么办?
报错: