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

73 篇文章 32 订阅
55 篇文章 6 订阅

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


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




  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值