关于单词转换map的程序,错在那了?编译出错的地方已给出。
#include<iostream>
#include<vector>
#include<string>
#include<map>
using namespace std;
void main()
{
map<string,string>trans_map;
typedef map<string,string>::value_type valType;
trans_map.insert(valType("gratz","grateful"));
trans_map.insert(valType("'em","them"));
trans_map.insert(valType("cuz","because"));
trans_map.insert(valType("nah","no"));
trans_map.insert(valType("sez","says"));
trans_map.insert(valType("tanx","thanks"));
trans_map.insert(valType("wuz","was"));
trans_map.insert(valType("pos","suppose"));
map<string,string>::iterator it;
cout<<"Here is our transformation map: \n\n";
for(it=trans_map.begin();
it!=trans_map.end();++it)
cout<<"key: "<<(*it).first<<"\t"
<<"value: "<<(*it).second<<"\n";
cout<<"\n\n";
string textarray[14]={"nah","I","sez","tanx","cuz","I",
"wuz","pos","to","not","cuz","I","wuz","gratz"};
vector<string> text(textarray,textarray+14);
vector<string> ::iterator iter;
cout<<"Here is our original string vector: \n\n";
int cnt=1;
for(iter=text.begin();iter!=text.end();++iter,++cnt)
cout<<*iter<<(cnt%8?" ":"\n");
cout<<"\n\n";
map<string,int>stats;
typedef map<string,int>::value_type statsValType;
for( iter=text.begin();iter!=text.end();++iter)
if((it=trans_map.find(*iter))!=trans_map.end())
{
if(stats.count(*iter))
stats[*iter]+=1;
esle stats.insert(statsValType(*iter,1));
*iter=(*it).second;
}
cout<<"Here is our transformed string vector:\n\n";
cnt=1;
for(iter=text.begin();iter!=text.end();++iter,++cnt)
cout<<*iter<<(cnt%8 ?" ":"\n");
cout<<"\n\n\n";
cout<<"Finally, here are our statistics:\n\n";
map<string,int ,less<string>,allocator>::iterator siter;
for(siter=stats.begin(); siter!=stats.end();++siter)
cout<<(*siter).first<<" "
<<"was transformed "
<<(*siter).second
<<((*siter).second==1
?" time\n" : "times\n");
}
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E:\C++\map\a.cpp(66) : error C2228: left of '.first' must have class/struct/union type
E:\C++\map\a.cpp(69) : error C2228: left of '.second' must have class/struct/union type
E:\C++\map\a.cpp(69) : error C2228: left of '.second' must have class/struct/union type