cb22a_c++_标准模板库_STL_map_multimap红黑树(数据结构)关联容器

本文主要是介绍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(1, "one"));//数值1就是键,"one"就是值。就是一对a.insert(map<int, string>::value_type(2, "two"));a.insert(map<int, string>::value_type(3, "Three"));a.insert(make_pair(-1, "Minus One"));//插入方法2a.insert(pair<int, string>(1000, "One Thousand"));//插入方法3a[1000000] = "One Million";//插入方法4,不能用于multimapscore.insert(make_pair("scott", 100));score.insert(make_pair("sunny", 100));score.insert(make_pair("Gates", 88));score["bill"] = 99;cout << "bill score is:" << score["bill"] << endl;cout << "Gates score is: " << score["Gates"] << endl;cout << "map查找返回的是一个常迭代器" << endl;cout << a[3] << endl;//下标3对应three;cout << a[-1] << endl;//-1,对应--Minus Onecout << "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(3, "Three"));ma.insert(multimap<int, string>::value_type(45, "Forty Five"));ma.insert(make_pair(-1, "Minus one1"));ma.insert(pair<int, string>(1000, "One Thousand"));ma.insert(pair<int, string>(1000, "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) << " 个1000" << endl;cout << "multimap查找返回的是一个常迭代器" << endl;multimap<int, string>::const_iterator fi;fi=ma.find(45);if (fi != ma.end()){cout << "找到了:" << fi->first << "=" << fi->second.c_str() << endl;}else{cout << "没有找到" << endl;}fi = ma.find(1000); //多个1000都找出来显示if (fi != ma.end()){cout<<"找到了1000!!!"<<endl;size_t n = ma.count(1000);for (size_t i = 0; i < n; ++i){cout << "\t Key: " << fi->first;cout << ", Value[" << i << "]=";cout << fi->second << endl;++fi;}}cout << "erase删除方法的使用" << endl;if (ma.erase(-1) > 0)cout << "通过key删除成功,结果大于0:" << endl;cout << "通过查找,再删除" << endl;multimap<int, string>::iterator iElementFound = ma.find(45);if (iElementFound != ma.end()){ma.erase(iElementFound);cout << "删除45成功咯" << endl;}ma.erase(ma.lower_bound(1000), ma.upper_bound(1000));cout << "从第一个1000,到最后一个1000的数据都删除了" << endl;return 0;
}

 

这篇关于cb22a_c++_标准模板库_STL_map_multimap红黑树(数据结构)关联容器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/947773

相关文章

C#如何调用C++库

《C#如何调用C++库》:本文主要介绍C#如何调用C++库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录方法一:使用P/Invoke1. 导出C++函数2. 定义P/Invoke签名3. 调用C++函数方法二:使用C++/CLI作为桥接1. 创建C++/CL

利用Python打造一个Excel记账模板

《利用Python打造一个Excel记账模板》这篇文章主要为大家详细介绍了如何使用Python打造一个超实用的Excel记账模板,可以帮助大家高效管理财务,迈向财富自由之路,感兴趣的小伙伴快跟随小编一... 目录设置预算百分比超支标红预警记账模板功能介绍基础记账预算管理可视化分析摸鱼时间理财法碎片时间利用财

如何在 Spring Boot 中实现 FreeMarker 模板

《如何在SpringBoot中实现FreeMarker模板》FreeMarker是一种功能强大、轻量级的模板引擎,用于在Java应用中生成动态文本输出(如HTML、XML、邮件内容等),本文... 目录什么是 FreeMarker 模板?在 Spring Boot 中实现 FreeMarker 模板1. 环

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

C++ vector的常见用法超详细讲解

《C++vector的常见用法超详细讲解》:本文主要介绍C++vector的常见用法,包括C++中vector容器的定义、初始化方法、访问元素、常用函数及其时间复杂度,通过代码介绍的非常详细,... 目录1、vector的定义2、vector常用初始化方法1、使编程用花括号直接赋值2、使用圆括号赋值3、ve