[英]`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.