在前面的文章中, 我们详细讲述了map这个关联数组, 并介绍了经典的单词计数程序, 下面, 我们看看这个场景: 单词计数的时候, 不考虑一系列的单词, 如不考虑"a", "kj"等等。 我们知道, set是个互斥集合, 所以在此可以排上用场了, 且看:
#pragma warning(disable : 4786)
#include <map>
#include <set>
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
ifstream cin("test.txt"); // 这个cin会屏蔽掉std::cin
if(!cin)
{
return 1;
}
map<string, int> m;
string word;
set<string> s; // 互斥集合
s.insert("a");
s.insert("jk");
while(cin >> word)
{
if(s.find(word) == s.end()) // 在s中找不到word, 也就是说,word不在s中
{
m[word]++; // 非常非常经典啊, 我被map折服得五体头地
}
}
map<string, int>::iterator it;
for(it = m.begin(); it != m.end(); it++)
{
cout << (*it).first << " " << (*it).second << endl;
}
return 0;
}
经测试, ok.
好吧, 就这样。外面的雨, 淅淅沥沥下个不停。