首页 > 解决方案 > 使用迭代器在地图中搜索值

问题描述

我正在尝试编写一个程序,其中我声明了两个值,书名和 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;
}

标签: c++

解决方案


首先

 cin.ignore();

正在消耗您输入的第一个“1”,就像这样,它应该可以工作

 for (int i = 0; i < 10; i++) {
        getline(cin, name);
        cin >> isbn;
        cin.ignore();
        mymap.insert(pair<int, string>(isbn, name));
    }

推荐阅读