代码之家  ›  专栏  ›  技术社区  ›  Armen Tsirunyan

`自动递增'std::map<string,int>:)

  •  1
  • Armen Tsirunyan  · 技术社区  · 14 年前

    这是我的代码:

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

    这是实现我想要的目标的最好方法吗?还是有更优雅、更时尚的解决方案?提前谢谢

    1 回复  |  直到 14 年前
        1
  •  8
  •   James McNellis    14 年前

    在插入之前,不需要检查该键上是否有元素,因为 insert 如果密钥已经存在,则不改变映射值。你不需要单独记录计数,你可以打电话给 size() 要获取下一个值:

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