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

Arm*_*yan 1 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++));
   }
}
Run Code Online (Sandbox Code Playgroud)

这是实现我想要实现的目标的最佳方式还是更优雅,更具STL-ish的解决方案?提前致谢

Jam*_*lis 8

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

while (std::cin >> s)
{
    mp.insert(std::make_pair(s, mp.size()));
}
Run Code Online (Sandbox Code Playgroud)