c++ - 如何在地图c ++中查找和打印对键
问题描述
我试图创建一个接收两个字符串并找到两者之间的编辑距离的函数。现在我正在设置一个包含键盘上几乎所有键的映射,以及一个给出该键坐标的对,EX:q = (1,0)。现在我试图弄清楚如何在我的地图中找到一个特定的键,并打印它的坐标。我的最后一行代码没有让我配对,正确的语法是什么?
map<char, pair<int,int>> mapsetup(){
map<char, pair<int, int>> keyMap = {
{'1',make_pair(0,0)},{'2',make_pair(0,1)},{'3',make_pair(0,2)},{'4',make_pair(0,3)},{'5',make_pair(0,4)},{'6',make_pair(0,5)},{'7',make_pair(0,6)},
{'8',make_pair(0,7)},{'9',make_pair(0,8)},{'0',make_pair(0,9)},{'q',make_pair(1,0)},{'w',make_pair(1,1)},{'e',make_pair(1,2)},{'r',make_pair(1,3)},
{'t',make_pair(1,4)},{'y',make_pair(1,5)},{'u',make_pair(1,6)},{'i',make_pair(1,7)},{'o',make_pair(1,8)},{'p',make_pair(1,9)},{'a',make_pair(2,0)},
{'s',make_pair(2,1)},{'d',make_pair(2,2)},{'f',make_pair(2,3)},{'g',make_pair(2,4)},{'h',make_pair(2,5)},{'j',make_pair(2,6)},{'k',make_pair(2,7)},
{'l',make_pair(2,8)},{';',make_pair(2,9)},{'z',make_pair(3,0)},{'x',make_pair(3,1)},{'c',make_pair(3,2)},{'v',make_pair(3,3)},{'b',make_pair(3,4)},
{'n',make_pair(3,5)},{'m',make_pair(3,6)},{',',make_pair(3,7)},{'.',make_pair(3,8)},{'/',make_pair(3,9)}
};
return keyMap;
}
int main(){
map<char, pair<int,int>> mapt = mapsetup();
string target, typo;
cout << "Enter target string" << endl;
getline(cin, target);
cout << "Enter typo string" << endl;
getline(cin, typo);
cout << mapt.find('a')->second << endl;
}
解决方案
在这条线上:
cout << mapt.find('a')->second << endl;
您正在尝试打印pair<int,int>
. 但是operator<<
对于cout
不知道如何处理一对。
相反,您可以这样做:
auto i = mapt.find('a');
cout << i->second.first << " " << i->second.second << endl;
这是一个演示。
或者,当给定一对时,您可以重载operator<<
to 做正确的事情:
ostream& operator<<(ostream &out, const pair<int, int> &p) {
return out << p.first << " " << p.second;
}
现在您可以使用原始语法:
cout << mapt.find('a')->second << endl;
这是一个演示。
推荐阅读
- javascript - 在 json 对象中转换 php 数组的最佳方法(而不是在 json 单个文件中)
- powerbi - 平均复杂
- haskell - 如何使用 Haskell 中间件添加 HTTP 请求正文的请求和响应的特定表示
- angular - 在 Angular 应用程序中代理 Firebase api 调用
- angular - Angular ngxs 单元测试调度不起作用
- php - 照常共享到服务帐户,从日历 API 查询时,日历不会出现在列表中
- python - 如何创建fabric2任务装饰器?
- siddhi - 如何检测涉及多个无序条件的模式
- google-sheets - 仅当两个单独的单元格匹配时,才将值从一个单元格移动到另一个单元格
- java - 有没有办法让我的 JavaFX 代码更加清晰?