题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1075
map 主要是键和值的一一对应,通过这个题目体验一下STL中map的强大。
#include<stdio.h>
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main(){
int i;
string str;
string key, value;
string ans, temp;
map <string, string> m;
cin >> str;//str临时接收START
while(1){
cin >> value;//读入键值
if(value == "END")
break;
cin >> key;//读入键
m[key] = value;//建立map
}
cin >> str;//临时接收START
getchar();//接收START之后的空格
getline(cin, str);//getline用于读取一行字符,直到换行符,包括换行符,从输入流读入,生成一个包含一串从输入流读入的字符的字符串
while(str != "END"){
ans = temp = "";//每读入一个句子,初始化翻译结果ans和临时串temp为空
for(i = 0; i < str.size(); i++){//str.size()函数返回字符数量
if(str[i] >= 'a' && str[i] <= 'z'){
temp += str[i];//temp实现了一个单词一个单词的翻译,若是小写字母,就一直把当前单个字符拼接到temp后面
}
else{
if(m.count(temp)){//当当前字符不再是字母时,判断若是temp是map里的一个键值,temp变为翻译之后的单词,m.count()函数返回temp出现的次数
temp = m[temp];
}
ans += temp;//把刚刚翻译好的单词拼接到这句翻译之后的答案ans上
ans += str[i];//把单词后面的空格或回车拼接到答案ans上
temp = "";//temp还原回空,继续翻译下一个单词
}
}
cout << ans << endl;//输出本句翻译之后的结果
getline(cin, str);
}
return 0;
}
a) =,assign() //赋以新值
b) swap() //交换两个字符串的内容
c) +=,append(),push_back() //在尾部添加字符
d) insert() //插入字符
e) erase() //删除字符
f) clear() //删除全部字符
g) replace() //替换字符
h) + //串联字符串
i) ==,!=,<,<=,>,>=,compare() //比较字符串
j) size(),length() //返回字符数量
k) max_size() //返回字符的可能最大个数
l) empty() //判断字符串是否为空
m) capacity() //返回重新分配之前的字符容量
n) reserve() //保留一定量内存以容纳一定数量的字符
o) [ ], at() //存取单一字符
p) >>,getline() //从stream读取某值
q) << //将谋值写入stream
r) copy() //将某值赋值为一个C_string
s) c_str() //将内容以C_string返回
t) data() //将内容以字符数组形式返回
u) substr() //返回某个子字符串
v)查找函数
w)begin() end() //提供类似STL的迭代器支持
x) rbegin() rend() //逆向迭代器
y) get_allocator() //返回配置器
map的基本操作函数
C++ Maps是一种关联式容器,包含“
关键字/值”对
begin() 返回指向map头部的
迭代器
clear() 删除所有元素
count() 返回指定元素出现的次数
empty() 如果map为空则返回true
end() 返回指向map末尾的
迭代器
equal_range() 返回特殊条目的
迭代器对
erase() 删除一个元素
find() 查找一个元素
get_allocator() 返回map的配置器
insert() 插入元素
key_comp() 返回比较元素key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size() 返回可以容纳的最大元素个数
rbegin() 返回一个指向map尾部的逆向
迭代器
rend() 返回一个指向map头部的逆向
迭代器
size() 返回map中元素的个数
swap() 交换两个map
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数