map、set例子

原创 2015年07月08日 15:43:18
#include<iostream>
#include<map>
#include<string>
#include<cstddef>
#include<set>

using namespace std;

//void main()
//{
//	map<string, string> phonebook;
//	phonebook.insert(pair<string,string>("songji", "123456879"));
//	//phonebook.insert(make_pair<string,string>("sj", "159467893"));
//	phonebook.insert(make_pair("sj", "159467893"));    //不需要传入参数类型
//	phonebook.insert(map<string, string>::value_type("songji", "123456879"));
//	for (auto out : phonebook)
//		cout << out.first << " " << out.second << endl;
//}

//int main()
//{
//    string word;
//    map<string,int> word_count;
// 
//    while(cin >> word)
//    {
//        pair<map<string,int>::iterator,bool> p = word_count.insert(make_pair(word,1));
          //insert(或者emplace)返回的值依赖于容器类型和参数。对于不包含重复关键字的容器,添加单一元素的insert和emplace版本返回一个pair。
          //pair的first成员是一个迭代器,指向具有给定关键字的元素;
          //pair的second成员是一个bool值,指出元素是插入成功还是已经在容器中。
          //如果关键字已经在容器中,则insert什么事情也不做,且返回值中的bool部分为false。
          //如果关键字不在容器中,元素被插入到容器中,且bool值为true。
//        if(p.second == false)
//        {
//            ++p.first->second;    //++(*(p.first).second);
//        }
//    }
// 
//    for(map<string,int>::iterator flag=word_count.begin();flag!=word_count.end();flag++)
//        cout << flag->first << " " << flag->second << endl;
//}

void main()
{
	/*map<int, int> num;
	int xuehao;*/

	map<string, size_t> word_count;
	string word;

	set<string> exclude = { "the", "a", "an", "The", "A", "An" };     //排除指定的要统计的单词的集合

	while (cin >> word)
	{
		if (exclude.find(word)==exclude.end())    //当在exclude的set中找不到“word”,find才会返回end,下面语句才会执行
			++word_count[word];    //在set找见,则不会执行,也就实现了设定的忽略统计单词的集合
								   //提取word的计数器,并对其加1;
		//当对word_count进行下标操作时,我们使用一个string作为下标,获得与此string相关联的size_t类型的计数器
	}

	for (const auto &w : word_count)       //当对map中提取一个元素时,会得到一个pair类型的对象(first成员保存关键字,second成员保存对应的值)
		cout << w.first << "\t" << w.second << ((w.second) > 1 ? "times" : "time") << endl;
}


相关文章推荐

java Set Map使用例子

package com.zhiru; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Map.En...

List,Set,Map用法以及区别

出处:http://my.oschina.net/u/933822/blog/391954 List,Set,Map是否继承自Collection接口?  答:List,Set是,Map不...

windbg导出stl map和set的插件

  • 2014年07月28日 16:53
  • 153KB
  • 下载

List,set,Map 的用法和区别

  • 2012年07月31日 14:35
  • 20KB
  • 下载

List,Set,Map用法以及区别

List,Set,Map是否继承自Collection接口?  答:List,Set是,Map不是。  如图:        Collection    ├List   ...

set.list.map接口

  • 2012年03月29日 22:43
  • 18KB
  • 下载

list,set,map,数组间的相互转换

1.list转set Java代码  Set set = new HashSet(new ArrayList());     Java代码   Se...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:map、set例子
举报原因:
原因补充:

(最多只允许输入30个字)