STL——map和set
一、map
1、map被定义为一对(pair即key和value)数值。
key值在map内最多只有一份。
假如需要对一篇文章中的单词计数,那么就可以建立一个map,string类型的key,int型的value,表示某个单词出现的次数。
#include<map>
#include<string>
map<string,int> words;
输入key/value的方式如下:
words["hello"] = 1;
字数统计程序:
string word;
while(cin >> word)
{
words[word]++;
}
key和value对应于map对象内名为first和second的member。循环打印map内的key/value值时可以如下操作:
map<string,int>::iterator iter = words.begin();
for(;iter != words.end();iter++)
{
cout << "key:" << iter->first <<
"value:" << iter->second << endl;
}
2、查询map内是否存在某个key
//三种方法:
//No1
int count = 0;
if(!words["hello"])
//hello不存在
//No2
if(words.find("hello") == words.end())
//hello不存在
//No3
if(!words.count("hello"))
//hello不存在
第一种方法:如果“hello”不存在,那么会自动加入map中,key为“hello”,value为对应类型的默认值;
第二种方法:find函数为map对象的成员函数,不是泛型算法的函数。函数返回值为指向一个pair的迭代器,如果不存在则为end()。
第三种方法:count函数返回的为某个特定项目在map对象内的个数
二、set
1、set由一群key的组合而成,没有value。
set中的key也只有一份。
假如我们统计一篇文章中出现了哪些单词,而不必统计出现的次数,那么就可以用set容器来存储出现过得单词。
#include<set>
#include<string>
set<string> words;
向words中加入元素使用insert函数
words.insert(ival); //加入单一元素
words.insert(vec.begin(), vec.end()); //加入一个范围元素,vec为vector容器
查询某值是否在set中
words.count("hello"); //返回hello的份数
STL——map和set的更多相关文章
- stl::map之const函数访问
如何在const成员数中访问stl::map呢?例如如下代码: string ConfigFileManager::MapQueryItem(const string& name) const ...
- hdu4941 Magical Forest (stl map)
2014多校7最水的题 Magical Forest Magical Forest Time Limit: 24000/12000 MS (Java/Others) Memory Limit ...
- [CareerCup] 13.2 Compare Hash Table and STL Map 比较哈希表和Map
13.2 Compare and contrast a hash table and an STL map. How is a hash table implemented? If the numbe ...
- STL MAP及字典树在关键字统计中的性能分析
转载请注明出处:http://blog.csdn.net/mxway/article/details/21321541 在搜索引擎在通常会对关键字出现的次数进行统计,这篇文章分析下使用C++ STL中 ...
- POJ 3096 Surprising Strings(STL map string set vector)
题目:http://poj.org/problem?id=3096 题意:给定一个字符串S,从中找出所有有两个字符组成的子串,每当组成子串的字符之间隔着n字符时,如果没有相同的子串出现,则输出 &qu ...
- STL MAP 反序迭代
ITS_NOTICE_MAP::reverse_iterator it = noticeMap.rbegin(); for ( ; it != noticeMap.rend(); ++it ) { I ...
- 泛型Binary Search Tree实现,And和STL map比较的经营业绩
问题叙述性说明: 1.binary search tree它是一种二进制树的.对于key值.比当前节点左孩子少大于右子. 2.binary search tree不是自平衡树.所以,当插入数据不是非常 ...
- Dictionary,hashtable, stl:map有什么异同?
相同点:字典和map都是泛型,而hashtable不是泛型. 不同点:三者算法都不相同 Hashtable,看名字能想到,它是采用传统的哈希算法:探测散列算法,而字典则采用的是散列拉链算法,效率较高, ...
- STL Map和multimap 容器
STL Map和multimap 容器 map/multimap的简介 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供 基于key的快速检索能力. ...
- C++ STL map使用
Map是c++的一个标准容器,它提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map构造函数:map<string , in ...
随机推荐
- java实现多文件上传01
1.html代码 <html> <head> <link rel="stylesheet" type="text/css" hre ...
- 【Spring实战】—— 4 Spring中bean的init和destroy方法讲解
本篇文章主要介绍了在spring中通过配置init-method和destroy-method方法来实现Bean的初始化和销毁时附加的操作. 在java中,我们并不需要去管理内存或者变量,而在C或C+ ...
- vue v-on 带参事件
1.js代码 var list=[ //定义一个数组 {title:} ] var box=new Vue({ el:'.box', data:{ list:list }, methods:{ //d ...
- March 28 2017 Week 13 Tuesday
Never was anything great achieved without danger. 不经历风雨,又怎能见彩虹. After the rain, if there's the sunsh ...
- IOS 通讯录 (访问,添加,修改)
如何访问用户的通讯录 在iOS中,有2个框架可以访问用户的通讯录 AddressBookUI.framework 提供了联系人列表界面.联系人详情界面.添加联系人界面等 一般用于选择联系人 Add ...
- 从数据流角度管窥 Moya 的实现(一):构建请求
相信大家都封装过网络层. 虽然系统提供的网络库以及一些著名的第三方网络库(AFNetworking, Alamofire)已经能满足各种 HTTP/HTTPS的网络请求,但直接在代码里用起来,终归是比 ...
- CSU计算机研究生推免
考研复习 一开始,我是没有想到能够拿到研究生推免资格的,从今年3月份到整个暑假过完,一共6个月的时间,我一直在准备考研. 具体来说,我是在准备考研数学,整整6个月时间的数学复习,给我一种感觉,把大一大 ...
- ACM-ICPC (10/20)
B. Bakery time limit per test 2 seconds memory limit per test 256 megabytes input standard input out ...
- 动态规划(DP),压缩状态,插入字符构成回文字符串
题目链接:http://poj.org/problem?id=1159 解题报告: 1.LCS的状态转移方程为 if(str[i-1]==str[j-1]) dp[i][j]=dp[i-1][j-1] ...
- WIN7系统 64位出现 Net Framework 数据提供程序要求 Microsoft Data Access Components(MDAC).
WIN7系统 64位出现 Net Framework 数据提供程序要求 Microsoft Data Access Components(MDAC).请安装 Microsoft Data Acces ...