用insert重写单词计数程序

来源:互联网 发布:mac轻淘客插件 编辑:程序博客网 时间:2024/05/16 05:03
int main (int argc, char* argv[])
{
   std::ios::sync_with_stdio (false);
    //忽略列表
    setexclude ={ "fuck", "damn" };
    stringword;
    map<string, size_t> word_count;
    while (cin>> word) {
      //大小写不敏感, 全部转换为小写
      for (auto &ch : word)
         ch = tolower (ch);
      //只输入忽略列表中不在的单词
      if (exclude.find (word) == exclude.end ()){
         //ret的类型是pair< map< string, size_t>::iterator, bool>
         auto ret = word_count.insert (make_pair(word,1));
         if (!ret.second)
            //ret.first是一个word_count的迭代器
            //ret.first->解引用
            //++ret.first->second迭代器指向的计数器++
            ++ret.first->second;
      }
    }
    for (auto it= word_count.cbegin (); it != word_count.cend (); ++it) {
      cout << "The " << it-> first<< " has appered ";
      cout << it-&gtsecond << ((it->second > 1) ? " times" : " time") << endl;
    }
    return0;
}

或者直接:
while (cin >> word)
      ++word_count.insert ({ word, 0 }).first->second;
C++博大精深, 由此可见一斑.
0 0