经典的单词计数程序---利用关联数组map和互斥集合set

       在前面的文章中, 我们详细讲述了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.  


      好吧, 就这样。外面的雨, 淅淅沥沥下个不停。




你可能感兴趣的:(经典的单词计数程序---利用关联数组map和互斥集合set)