cb22a_c++_标准模板库_STL_map_multimap红黑树(数据结构)关联容器
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红黑树(数据结构)关联容器的更多相关文章
- cb23a_c++_标准模板库STL_set_multiset_关联容器
cb23a_c++_标准模板库STL_set_multiset_关联容器 set(集)数据不能重复.multiset(多集)可以重复.操作数据速度快,数据自动排序.红黑树(数据结构)红黑树-二叉树基本 ...
- 标准模板库(STL)学习探究之vector容器
标准模板库(STL)学习探究之vector容器 C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...
- C++_标准模板库STL概念介绍1-建立感性认知
标准模板库的英文缩写是STL,即Standard Template Library. STL里面有什么呢? 它提供了一组表示容器.迭代器.函数对象和算法的模板. 容器是一个与数组类似的单元,可以存储若 ...
- C++_标准模板库STL概念介绍2-泛型编程
有了之前使用STL的经验后,接下来讨论泛型编程及其底层的理念: 首先我们知道STL只是泛型编程的一种: 而面向对象的编程方式关注的是编程的数据方面: 而泛型编程关注的是算法: 但是,他们之间的一个重要 ...
- C++_标准模板库STL概念介绍5-其他库与总结
C++还提供了其他一些类库,这些类库更加专用. 例如,头文件complex为复数提供了类模板complex,包含用于float.long和long double的具体化. 这个类提供了标准的复数运算以 ...
- C++_标准模板库STL概念介绍4-算法
STL包含很多处理容器的非成员函数: sort() copy() find() random_shuffle() set_union() set_intersection() set_differen ...
- C++_标准模板库STL概念介绍3-函数对象
函数对象也叫做函数符(functor). 函数符是可以以函数方式和( )结合使用的任意对象. 包括函数名,指向函数的指针,重载了()运算符的类对象. 可以这样定义一个类: class Linear { ...
- 8、泛型程序设计与c++标准模板库2.3双端队列容器
双端队列容器是一种放松了访问权限的队列.除了从队列的首部和尾部访问元素外,标准的双端队列也支持通过使用下标操作符"[]"进行直接访问. 它提供了直接访问和顺序访问方法.其头文件为& ...
- 标准模板库(STL)学习探究之Multimap容器
C++ Multimaps和maps很相似,但是MultiMaps允许重复的元素.(具体用法请参考map容器) 函数列表: begin() 返回指向第一个元素的迭代器 cle ...
随机推荐
- tp5插入百万条数据处理优化
<?php namespace app\index\controller; use think\Controller; use think\Db; class Charu extends Con ...
- vue展开过度动画
有一段时间没用vue动画了,就忘了,又仔细去看了vue官网 的过渡&动画,记录下来方便快速使用 (可以多看vue官网 过渡&动画 实现更多效果) 1.实际效果 展开收起效果.gif 2 ...
- 如何利用 Python 爬虫实现给微信群发新闻早报?(详细)
1. 场景 经常有小伙伴在交流群问我,每天的早报新闻是怎么获取的? 其实,早期使用的方案,是利用爬虫获取到一些新闻网站的标题,然后做了一些简单的数据清洗,最后利用 itchat 发送到指定的社群中. ...
- Vim的三款实用插件
Vim 是 Linux 下的常用文本编辑器,但也经常被称为是一个上古神器,因为它对于初学者而言相当不友好,也不好入门. 但是,对于高手而言,他们不仅将 Vim 玩得很溜,而且还将它当作代码开发的主要工 ...
- Typora 使用 Markdown 嵌入 LaTeX 数学公式符号语法
博客园不支持渲染 LaTeX 数学公式,需要用到什么公式,请复制到您所用的支持 LaTeX 的编辑器中查看实现效果.Typora 可以渲染 LaTeX 数学公式. 目录 行内与独行 行内公式 独行公式 ...
- Beta冲刺——5.25
这个作业属于哪个课程 软件工程 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺 作业正文 正文 github链接 项目地址 其他参考文献 无 一.会议内容 1.解决小程序之前的遗留问题 ...
- Spring Cloud 系列之 Apollo 配置中心(三)
本篇文章为系列文章,未读前几集的同学请猛戳这里: Spring Cloud 系列之 Apollo 配置中心(一) Spring Cloud 系列之 Apollo 配置中心(二) 本篇文章讲解 Apol ...
- ASP.NET中LINQ的基本用法
此Demo只是一个极其简单的LINQ查询Demo 一个类 using System; using System.Collections.Generic; using System.Linq; usin ...
- Java实现行列递增矩阵的查找
1 问题描述 在一个m行n列的二维数组中,每一行都按照从左到右递增的顺序排列,每一列都按照从上到下递增的顺序排列.现在输入这样的一个二维数组和一个整数,请完成一个函数,判断数组中是否含有该整数. 2 ...
- java实现第五届蓝桥杯信号匹配
信号匹配 从X星球接收了一个数字信号序列. 现有一个已知的样板序列.需要在信号序列中查找它首次出现的位置.这类似于串的匹配操作. 如果信号序列较长,样板序列中重复数字较多,就应当注意比较的策略了.可以 ...