簡體   English   中英

`auto-increment` std :: map <string, int> :)

[英]`auto-increment` std::map<string, int> :)

好的,問題很簡單-我正在從輸入流中讀取單詞,這些單詞可能會重復。 我需要填充一個地圖,以便所有單詞都得到從0到n-1的索引。 這是我的代碼:

map<string, int> mp;
string s;
int n = 0;
while(cin >> s)
{
   if(mp.find(s) == mp.end())
   {
      mp.insert(make_pair(s, n++));
   }
}

這是實現我想要達到的目標的最佳方法,還是有更優雅,更類似於STL的解決方案? 提前致謝

在插入之前,您不需要檢查該鍵上是否有任何元素,因為如果鍵已經存在,則insert不會更改映射值。 您無需單獨跟蹤計數; 您可以只調用size()以獲得下一個值:

while (std::cin >> s)
{
    mp.insert(std::make_pair(s, mp.size()));
}

暫無
暫無

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

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