C++ Primer笔记7_STL之关联容器
来源:互联网 发布:淘宝主页视频制作 编辑:程序博客网 时间:2024/05/22 17:33
关联容器
与顺序容器不同,关联容器的元素是按关键字来访问和保存的。而顺序容器中的元素是按他们在容器中的位置来顺序保存的。
关联容器最常见的是map、set、multimap、multiset
map的元素以键-值【key-value】对的形式组织:键用作元素在map中的索引,而值则表示所存储和读取的数据。
set仅包含一个键,并有效的支持关于某个键是否存在的查询。
pair类型
首先介绍下pair,pair定义在utility头文件中,一个pair保存两个数据成员,类似容器,pair是一个用来生成特点类型的模板。当创建一个pair时,我们必须提供两个类型名。
pair<string, string> a; //保存两个string
pair<string, int> b; //一个保存string,一个保存int
可以使用make_pair来构建一个pair
#include <iostream>#include <utility>using namespace std;int main(){typedef pair<string, size_t> PS;PS p("hello", 10);//等价于pair<string, size_t> p("hello", 10);PS p1 = make_pair("SCOTT", 20);//make_pair(v1, v2); 以v1、v2来构建一个paircout << p.first << endl;cout << p.second << endl;cout << p1.first << endl;cout << p1.second << endl;return 0;}
map对象
定义map对象:
map<string, int> p;//定义一个空map
map<K, V>m;//——创建一个名为m的空对象,键和值类型分别为K和Vmap<K, V>m(m2);//——m是m2的副本,注意K和V的值要相同map<K, V>m(b,e);//——创建map类型的对象m,存储迭代器b和e标记的范围内所有元素的副本。
key_type——此容器类型的关键字类型
mapped_type——每个关键字关联的类型;只适用于map
value_type——对于set,与key_value相同,对于map,为pair类型:pair<const key_type, mapped_type>
#include <iostream>#include <map>using namespace std;int main(){map<string, int> p;p.insert(make_pair("Hello", 20));map<string, int>::iterator i = p.begin();map<string, int>::key_type first = i->first;//map对象自定义了key_type与mapped_type两个类型map<string, int>::mapped_type second = i->second;cout << first << endl;cout << second << endl;while(i!=p.end()){cout << i->first << " " << i->second << endl;++i;}return 0;}
给map添加元素:
1、可以使用insert成员实现;
2、或者先通过下标操作符获取元素,然后给获取的元素赋值。
使用下标访问map与使用下标访问数组或vector的行为截然不同: 用下标访问不存在的元素将导致在map容器中添加一个新元素,它的键即为该下标值。
查找与统计map中的元素:
1、使用m.count(k); 统计m中k出现的次数
2、使用m.find(k);查找以k为索引的元素,如果存在返回指向该元素的迭代器,否则返回末端迭代器
统计单词出现的次数:
#include <iostream>#include <map>using namespace std;int main(){string s;map<string, int> wordCnt;map<string, int>::iterator i;while(cin >> s){wordCnt[s]++;}for(i = wordCnt.begin(); i!=wordCnt.end(); ++i){cout << i->first << " " << i->second << endl;}return 0;}
- C++ Primer笔记7_STL之关联容器
- C++ Primer笔记5_STL之顺序容器
- c++primer阅读笔记之关联容器学习
- c++Primer笔记(十 关联容器)
- C++primer 关联容器
- 《C++primer》关联容器
- C++_STL 各种容器
- 【C++ Primer 学习笔记】: 容器和算法之【关联容器】
- C++ Primer笔记6_STL之泛型算法
- 【C++ Primer】笔记 关联容器
- C++Primer学习笔记第十章(10/18)关联容器
- 【C++primer学习笔记】第10章 关联容器
- C++Primer学习笔记(10)关联容器
- C++primer第五版笔记-第十一章关联容器
- c++ primer笔记之容器
- C ++ primer 中说的关联容器
- C++primer U10 读书笔记 关联容器
- 【足迹C++primer】36、使用关联容器
- DataGridView.DataSource= list(Of T)
- 我们都是一样的
- 【轉】關於UILabel UITextView UIWebView 行間距 文字排版
- 关于“Android所有根Activity中的Intent都存在被其它程序读到风险”的研究
- tomcat启动报错,找不到对应的 queue,从而引发内存泄漏
- C++ Primer笔记7_STL之关联容器
- java多线程(一)——简单介绍
- IO多路复用之select篇
- 信号量
- 【SSH2(理论+实践)】--图说Struts2的运行
- chroot
- java多线程(二)——concurrent库
- 随机数不是事!^~^
- 寒小阳