`auto-increment` std :: map <string,int =“”>:)</string,>

时间:2010-11-05 21:17:00

标签: c++ stl map auto-increment

好的,问题非常简单 - 我正在从输入流中读取单词,这些单词可能会重复。我需要填充一个地图,以便所有单词都能获得从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-ish解决方案?提前致谢

1 个答案:

答案 0 :(得分:7)

在插入之前,您无需检查该键是否有元素,因为如果该键已存在,insert不会更改映射值。您无需单独跟踪计数;您只需致电size()即可获得下一个值:

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