使用关联容器
两个主要的关联容器map和set
8个容器:(1)或者是一个set一个map;(2)或者要求不重复的关键字,或者允许重复关键字;
(3)按顺序保存元素,或无序保存。允许重复关键字的容器的名字中都包含单词multi;不
保持关键字按顺序存储的容器的名字都以单词unordered开头。
map类型常常被叫成关联容器,这个是关键字查找
set就是全由关键字组成
8个容器:(1)或者是一个set一个map;(2)或者要求不重复的关键字,或者允许重复关键字;
(3)按顺序保存元素,或无序保存。允许重复关键字的容器的名字中都包含单词multi;不
保持关键字按顺序存储的容器的名字都以单词unordered开头。
map类型常常被叫成关联容器,这个是关键字查找
set就是全由关键字组成
这次写博客的时候有点晚,早上有考试,没办法,不然挂了那就
咳咳,还有现在我发现一个写好博客的好方法了,我不在边写博客边看书了,感觉不太好,我还是先把书本知识学了,在写出来一起分享
使用map
好的这个关联容器的使用时怎么使用的呢?
这里有一个案例,那就是统计单词计数的小程序
以前用vector或字符串数组做的时候好麻烦,但是现在就简单多了!!!
//使用map //单词计数程序 void fun1() { map<string, size_t> word_count; //string到size_t的空map string word; while(cin>>word) ++word_count[word]; //提取word的计数器并将其加1 for(const auto &w : word_count) //对map中的每个元素打印 cout<<w.first<<" occurs "<<w.second<<((w.second > 1)?" times ": " time")<<endl; }
这样做出来是不是觉得很轻松呢,当年我写这个类似的程序的时候居然写了100多行才搞定- -#,当时还小小自得了一把,现在想来真是弱爆了。。。
使用set
//使用set //单词计数程序,忽略常见单词"the","and","or"等 void fun2() { map<string, size_t> word_count; //string到size_t的空map set<string> exclude={"The","But","And","Or","An","A", "the","but","and","or","an","a"}; string word; while(cin>>word) //只统计不在exclude中的单词 if(exclude.find(word) == exclude.end()) ++word_count[word]; //获取并递增word的计数器 for(const auto &w : word_count) //对map中的每个元素打印 cout<<w.first<<" occurs "<<w.second<<((w.second > 1)?" times ": " time")<<endl; }
这个是上面的改进版,但是使用了set加以限制^_^!!
PS:是不是这样就觉得这博客比以前的写的清晰了很多呢?哈哈,我也觉得,而且还轻松了好多呢!!!真是棒棒的!!!