使用迭代器在地图中搜索值

时间:2019-01-27 12:17:04

标签: c++

我正在尝试编写一个程序,其中我声明了两个值,即书名和isbn编号,我正在将这些值插入到map中,并将键值作为其isbn编号,因为我正在搜索isbn编号 1111111 (7乘1),但是在搜索时它永远不会变为true,这意味着 flag 不会变为 1 。 我尝试调试,虽然我打印了地图,但打印效果很好,但最终对我来说输出是数据结构书不可用,尽管在​​打印地图时它显示了数据结构1111111 < / strong>。这是示例输入和输出

  

示例输入

     

OOPswithc ++

     

1112523

     

数据库管理系统

     

1558652

     

计算机体系结构

     

1226355

     

Compilerdesign

     

1225652

     

计算理论

     

1311124

     

JavaProgramming

     

1255555

     

CProgramming

     

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;
}

1 个答案:

答案 0 :(得分:1)

第一个

 cin.ignore();

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

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