c++ - 使用迭代器在地图中搜索值
问题描述
我正在尝试编写一个程序,其中我声明了两个值,书名和 isbn 编号,我将这些值插入到地图中,键值作为它们的 isbn 编号,因为我正在搜索 isbn 编号1111111(7 乘以 1 ),但是在搜索它时它永远不会变为真,这意味着flag没有变为1。我尝试调试,当我打印地图时,它打印得很好,但最终对我的输出是Datastructures book is not available,即使在打印地图时它显示了Datastructures 1111111的记录。这是示例输入和输出
样本输入
OOPswithc++
1112523
数据库管理系统
1558652
计算机架构
1226355
编译器设计
1225652
计算理论
1311124
Java编程
1255555
C程序设计
1555658
云计算
1322664
无线网络
1765565
数据结构
1111111
样本输出
数据结构书可用
#include <iostream>
#include<map>
using namespace std;
int main() {
string name;
int isbn,flag=0;
map<int,string> mymap;
for(int i = 0 ; i < 10 ; i++) {
getline(cin,name);
cin.ignore();
cin>>isbn;
cin.ignore();
mymap.insert(pair<int,string>(isbn,name));
}
map<int,string>::iterator itr=mymap.begin();
for(itr=mymap.begin();itr!=mymap.end();++itr) {
if((itr->first)==1111111) {
flag=1;
break;
}
}
if(flag==1)
cout<<"Datastructures book is available";
else
cout<<"Datastructures book is not available";
return 0;
}
解决方案
首先
cin.ignore();
正在消耗您输入的第一个“1”,就像这样,它应该可以工作
for (int i = 0; i < 10; i++) {
getline(cin, name);
cin >> isbn;
cin.ignore();
mymap.insert(pair<int, string>(isbn, name));
}
推荐阅读
- token - Hyperledger Fabric fabtoken 能源认证用例
- discord.py - 用于检查命令性能的命令
- angular - PrimeNg TabMenu Angular 11:在右侧设置最后一个选项卡
- python - 从包含特定字母的字符串创建字典
- javascript - 在按钮按钮加载之前触发的触摸事件
- testing - 使用 Stripe 测试 Shopify 结帐 API 时出错“无法在没有任何交易的情况下完成结帐。”
- c# - 带有两个正在运行的程序的 NLog
- c++ - 如何正确应用 std::map
- google-apps-script - 查找任何重复项的脚本,然后用新数据粘贴它们,或者如果没有重复项 - 将新数据粘贴到下一个空行中
- postgresql - 多对多与自定义列