题目
给你密码表,然后翻译单词
思路
一开始用pair做,但是一直RE,找了好久布吉岛错在了哪里( ̄_ ̄|||),然后看大家都用map做,就ac了。。。呜呜呜
代码
#include <iostream>
#include <stack>
#include <vector>
#include <set>
#include <map>
#include <string>
#define MAXX 3005
using namespace std;
map<string, string> m;
int main()
{
string s1, s2;
while (true)
{
cin >> s1;
if (s1 == "START")
continue;
if (s1 == "END")
break;
cin >> s2;
m[s2] = s1;
}
cin >> s1;
getchar();//回车
string ss, tmp = "";
while (true)
{
getline(cin, ss);
if (ss == "END")
break;
for (int i = 0; i < ss.size(); ++i)
{
if (ss[i] >= 'a' && ss[i] <= 'z')
{
tmp += ss[i];
}
else
{
if (m.find(tmp) != m.end())
cout<<m[tmp];
else
cout<<tmp;
putchar(ss[i]);
tmp.clear();
}
}
cout<<endl;
}
return 0;
}
注意
① map的用法
也是一一对应的关系,查找的时候:
map<int, string>::iterator iter;
for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)
{
cout<<iter->first<<" "<<iter->second<<endl;
}
//或者
iter = mapStudent.find(1); //用find函数来定位数据出现的位置,返回一个迭代器
if(iter != mapStudent.end())
{
cout<<"Find, the value is "<<iter->second<<endl;
}
② 输入函数
- cin>> 遇到空格,Tab,回车结束输入
输入:jkljkl jkljkl //遇空格结束
输出:jkljkl - getline() 接受一个字符串,接受空格,在中
输入:jkl jfksldfj
输出:jkl jfksldfj
我一开始用的getchar,比较麻烦,但是感jio差不多诶