好的,问题非常简单 - 我正在从输入流中读取单词,这些单词可能会重复。我需要填充一个地图,以便所有单词都能获得从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解决方案?提前致谢
答案 0 :(得分:7)
在插入之前,您无需检查该键是否有元素,因为如果该键已存在,insert
不会更改映射值。您无需单独跟踪计数;您只需致电size()
即可获得下一个值:
while (std::cin >> s)
{
mp.insert(std::make_pair(s, mp.size()));
}