cb22a_c++_标准模板库_STL_map_multimap红黑树(数据结构)关联容器
map(映射,key不能重复,一对一对的,value_type(1, "one")),multimap(多映射key可以重复)
红黑树(数据结构)map,multimap就是红黑树-二叉树
基本操作
insert:4 种方法
count和find
erase:3种方法
注意:不能通过find进行修改。

a.insert(map<int, string>::value_type(1, "one")); 数值1就是key键,"one"就是值。就是一对

map 与 multimap是存储key-value(键-值 对)类型的容器。

不同之处在于:map只允许key与 value一一对应;multimap一个key可对应多个value;

STL在线手册英文链接 :http://www.cplusplus.com/reference/stl/

STL在线手册中文链接 :http://c.biancheng.net/stl/

txwtech@163.com

 /*cb22a_c++_标准模板库_STL_map_multimap红黑树(数据结构)关联容器
map(映射,key不能重复,一对一对的,value_type(1, "one")),multimap(多映射key可以重复)
红黑树(数据结构)map,multimap就是红黑树-二叉树
基本操作
insert:4 种方法
count和find
erase:3种方法
注意:不能通过find进行修改。 a.insert(map<int, string>::value_type(1, "one")); 数值1就是key键,"one"就是值。就是一对 map 与 multimap是存储key-value(键-值 对)类型的容器。 不同之处在于:map只允许key与 value一一对应;multimap一个key可对应多个value; STL在线手册英文链接 :http://www.cplusplus.com/reference/stl/ STL在线手册中文链接 :http://c.biancheng.net/stl/
*/
#include <iostream>
#include <map>
#include <string> using namespace std; int main()
{
map<int, string> a;
map<string, int> score;
multimap<int, string> ma; cout << "插入数据" << endl;
a.insert(map<int, string>::value_type(, "one"));//数值1就是键,"one"就是值。就是一对
a.insert(map<int, string>::value_type(, "two"));
a.insert(map<int, string>::value_type(, "Three"));
a.insert(make_pair(-, "Minus One"));//插入方法2
a.insert(pair<int, string>(, "One Thousand"));//插入方法3
a[] = "One Million";//插入方法4,不能用于multimap score.insert(make_pair("scott", ));
score.insert(make_pair("sunny", ));
score.insert(make_pair("Gates", ));
score["bill"] = ;
cout << "bill score is:" << score["bill"] << endl;
cout << "Gates score is: " << score["Gates"] << endl; cout << "map查找返回的是一个常迭代器" << endl;
cout << a[] << endl;//下标3对应three;
cout << a[-] << endl;//-1,对应--Minus One cout << "map里面里面一共有:" << a.size() << " 个键值对数据";
cout << "这些数据是:" << endl;
map<int, string>::const_iterator i;
for (i = a.begin(); i != a.end(); ++i)
{
cout << "Key:" << i->first;
cout << " Value:" << i->second.c_str();
cout << endl;
}
ma.insert(multimap<int, string>::value_type(, "Three"));
ma.insert(multimap<int, string>::value_type(, "Forty Five"));
ma.insert(make_pair(-, "Minus one1"));
ma.insert(pair<int, string>(, "One Thousand"));
ma.insert(pair<int, string>(, "one Thousand")); cout << endl << "multimap" << ma.size() << " 个数据。" << endl;
cout << "multimap数据显示:" << endl;
multimap<int, string>::const_iterator im;
for (im = ma.begin(); im != ma.end(); ++im)
{
cout << "Key: " << im->first;
//cout << " Value:" << im->second;//如果出错就用c_str()
cout << " value:" << im->second.c_str();
cout << endl;
}
cout << "multimap有" << ma.count() << " 个1000" << endl; cout << "multimap查找返回的是一个常迭代器" << endl;
multimap<int, string>::const_iterator fi; fi=ma.find();
if (fi != ma.end())
{
cout << "找到了:" << fi->first << "=" << fi->second.c_str() << endl; }
else
{
cout << "没有找到" << endl;
}
fi = ma.find(); //多个1000都找出来显示
if (fi != ma.end())
{
cout<<"找到了1000!!!"<<endl;
size_t n = ma.count();
for (size_t i = ; i < n; ++i)
{
cout << "\t Key: " << fi->first;
cout << ", Value[" << i << "]=";
cout << fi->second << endl;
++fi;
}
} cout << "erase删除方法的使用" << endl;
if (ma.erase(-) > )
cout << "通过key删除成功,结果大于0:" << endl; cout << "通过查找,再删除" << endl; multimap<int, string>::iterator iElementFound = ma.find();
if (iElementFound != ma.end())
{
ma.erase(iElementFound);
cout << "删除45成功咯" << endl;
} ma.erase(ma.lower_bound(), ma.upper_bound());
cout << "从第一个1000,到最后一个1000的数据都删除了" << endl; return ;
}

cb22a_c++_标准模板库_STL_map_multimap红黑树(数据结构)关联容器的更多相关文章

  1. cb23a_c++_标准模板库STL_set_multiset_关联容器

    cb23a_c++_标准模板库STL_set_multiset_关联容器 set(集)数据不能重复.multiset(多集)可以重复.操作数据速度快,数据自动排序.红黑树(数据结构)红黑树-二叉树基本 ...

  2. 标准模板库(STL)学习探究之vector容器

    标准模板库(STL)学习探究之vector容器  C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...

  3. C++_标准模板库STL概念介绍1-建立感性认知

    标准模板库的英文缩写是STL,即Standard Template Library. STL里面有什么呢? 它提供了一组表示容器.迭代器.函数对象和算法的模板. 容器是一个与数组类似的单元,可以存储若 ...

  4. C++_标准模板库STL概念介绍2-泛型编程

    有了之前使用STL的经验后,接下来讨论泛型编程及其底层的理念: 首先我们知道STL只是泛型编程的一种: 而面向对象的编程方式关注的是编程的数据方面: 而泛型编程关注的是算法: 但是,他们之间的一个重要 ...

  5. C++_标准模板库STL概念介绍5-其他库与总结

    C++还提供了其他一些类库,这些类库更加专用. 例如,头文件complex为复数提供了类模板complex,包含用于float.long和long double的具体化. 这个类提供了标准的复数运算以 ...

  6. C++_标准模板库STL概念介绍4-算法

    STL包含很多处理容器的非成员函数: sort() copy() find() random_shuffle() set_union() set_intersection() set_differen ...

  7. C++_标准模板库STL概念介绍3-函数对象

    函数对象也叫做函数符(functor). 函数符是可以以函数方式和( )结合使用的任意对象. 包括函数名,指向函数的指针,重载了()运算符的类对象. 可以这样定义一个类: class Linear { ...

  8. 8、泛型程序设计与c++标准模板库2.3双端队列容器

    双端队列容器是一种放松了访问权限的队列.除了从队列的首部和尾部访问元素外,标准的双端队列也支持通过使用下标操作符"[]"进行直接访问. 它提供了直接访问和顺序访问方法.其头文件为& ...

  9. 标准模板库(STL)学习探究之Multimap容器

    C++ Multimaps和maps很相似,但是MultiMaps允许重复的元素.(具体用法请参考map容器)     函数列表:     begin() 返回指向第一个元素的迭代器      cle ...

随机推荐

  1. 当.Net成为大厂门槛代码小白该何去何从?

    掌握.Net已成为进入大厂的通行牌.越来越多的互联网软件公司开始使用.Net Core,根据去年数据显示腾讯.网易.顺丰.携程.中通.申通.同程艺龙.微医.233网校.问卷星.金蝶等关键业务已经在往. ...

  2. Docker 入门:镜像

    主要内容: 什么是镜像 下载镜像 pull 设置下载加速源 查看镜像 上传镜像 push 什么是镜像(image) 镜像是一个文件系统,提供了容器运行时需要用到的文件和参数配置.相当于平时在使用某个软 ...

  3. [Firefox附加组件]0001.入门

    Firefox 火狐浏览器,拥有最快.最安全的上网体验,并且火狐拥有超过一万个的 扩展(add-ons),提供各种不同的扩展功能,您可以简单的下载.安装这些扩展以增强您的火狐功能,帮助您更好.更个性化 ...

  4. 几种常见的app推广形式

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  5. BZOJ1001 狼抓兔子 题解

    裸的最小割,转化成最大流即可. #include <bits/stdc++.h> int n,m; int S,T; int mincost; int head[6001000],tot= ...

  6. 04 . Nginx的Rewrite重写

    Rewrite简介 # Rewrite对应URL Rewrite,即URL重写,就是把传入web的请求重定向到其他URL的过程. # 当运维遇到要重写情况时,往往是要程序员把重写规则写好后,发给你,你 ...

  7. Chisel3 - util - LockingArbiter

    https://mp.weixin.qq.com/s/5oAwH3scumARzPidRBfG2w     带锁多入单出仲裁器,输出会被锁定指定的时钟周期.   参考链接: https://githu ...

  8. 使用turtle库绘制渐变的圆

    import turtle as t t.pensize(3) t.pencolor("blue") t.penup() t.fd(-250) t.seth(0) t.pendow ...

  9. Java实现 LeetCode 835 图像重叠(暴力)

    835. 图像重叠 给出两个图像 A 和 B ,A 和 B 为大小相同的二维正方形矩阵.(并且为二进制矩阵,只包含0和1). 我们转换其中一个图像,向左,右,上,或下滑动任何数量的单位,并把它放在另一 ...

  10. Java实现 LeetCode 430 扁平化多级双向链表

    430. 扁平化多级双向链表 您将获得一个双向链表,除了下一个和前一个指针之外,它还有一个子指针,可能指向单独的双向链表.这些子列表可能有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例 ...