关于单词转换map的程序,错在那了?编译出错的地方已给出。

32131532 2007-08-18 09:55:44
#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
...全文
222 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gfxiang 2007-08-19
  • 打赏
  • 举报
回复
#include<iostream>
#include<vector>
#include<string>
#include<map>

using namespace std;

int 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;
else
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>::iterator siter;

for(siter=stats.begin(); siter!=stats.end();++siter)
cout<<(*siter).first<<" "
<<"was transformed "
<<(*siter).second
<<((*siter).second==1
?" time\n" : "times\n");

return 0;
}
32131532 2007-08-19
  • 打赏
  • 举报
回复
请高手指教指教,这对我很重要。
32131532 2007-08-18
  • 打赏
  • 举报
回复
还不对
gfxiang 2007-08-18
  • 打赏
  • 举报
回复
试试
siter->first
siter->second
32131532 2007-08-18
  • 打赏
  • 举报
回复
不对啊
错误是后几行的。
gfxiang 2007-08-18
  • 打赏
  • 举报
回复
迭代器
it->first
it->second

64,687

社区成员

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

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