簡體   English   中英

在地圖C中迭代和使用find()

[英]Iterating and using find() in a map c++

我有一張地圖,其中存儲“工作”作為鍵,存儲“名稱”作為其存儲的值。

map<string, string>dutyAndJob; 
map<string,string>::iterator it; 

我基本上是在嘗試通過這張地圖查找特定的“名稱”。 如果名稱不存在,則不應進入此循環,但是由於某些未知原因,它始終會進入此循環:

string name = "Bob";

it = dutyAndJob.find(name);
if (it == dutyAndJob.end())
{
    cout << "Testing : " << name << endl;
}

由於某種原因,即使地圖中沒有存儲Bob,它仍然會進入此循環。

任何幫助將不勝感激!

if (it == dutyAndJob.end())  
{  
  cout << "Testing : " << name << endl;  
}  

應該:

if (it != dutyAndJob.end()) // Does it refer to a valid association
{  
  cout << "Testing : " << name << endl;  
}  

請注意,從==更改為!=表示該鍵已在映射中找到。 迭代器it是只相當於dutyAndJob.end()如果該鍵沒有被發現。

剛剛意識到Job是關鍵,而Name是數據。 您采用的結構化方式只能在Job上使用find來檢索Name。

   string job = "Cashier";

   it = dutyAndJob.find(job);
   if (it == dutyAndJob.end())
   {
       cout << "Testing : " << job<< endl;
   }

如果您實際上想按名稱搜索,也許名稱應該是關鍵字,而工作應該是數據?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM