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 ...
随机推荐
- {dede:channelartlist} 改变偶数的class
{dede:channelartlist} <div {dede:global.itemindex runphp='yes'} if((@me %2) == 0){ @me = 'class=& ...
- get_client_ip()
get_client_ip()获取ip地址,在开启IPv6协议的主机上会全部返回0.0.0.0原因是他会把ipv6地址认为是非法地址而转换成0.0.0.0,而ipv4地址在ipv6主机上用get_cl ...
- Xilinx的DocNav文件导航中的文档开头字母缩写都是什么意思?
在安装Xilinx的开发软件后都会附带安装一个用于查阅Xilinx技术文档的文件导航工具DocNav. 在DocNav中可以找到几乎所有对我们开发Xilinx FPGA有用的技术文档,其中的文档数量更 ...
- 【JUC】CyclicBarrier和Semaphore的使用
CyclicBarrier的使用 CyclicBarrier:可以让一组检测到一个屏障时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有的屏障拦截的线程才会继续执行,线程进入屏障通过Cyclic ...
- 线程池 & 线程调度
线程池1. 第四种获取线程的方法:线程池,一个 ExecutorService,它使用可能的几个池线程之 一执行每个提交的任务, 通常使用 Executors 工厂方法配置. 2. 线程池可以解决两个 ...
- 突发!HashiCorp禁止在中国使用企业版VAULT软件
目录 前言 HashiCorp公司介绍 HashiCorp旗下的软件 Provision Secure Connect Run 总结 前言 昨天HashiCorp突然发布一则消息,禁止在中国使用Vau ...
- 网络编程-TCP长连接和短连接
TCP是一个面向连接的协议.无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接.下面会介绍一个TCP连接是如何建立的以及通信结束后是如何终止的. 一.TCP连接的建立与终止 1.1 建立连 ...
- C# winform 学习(一)
目标 1.类和对象 2.定义类 3.对象的操作 4.命名空间 一.类和对象 1.理解 1)类:具有共同特征和行为的一类事物的统称 2)对象:类的一个具体唯一的实例 eg: 1路公交车;(类) 车牌为F ...
- Java实现 LeetCode 486 预测赢家
486. 预测赢家 给定一个表示分数的非负整数数组. 玩家1从数组任意一端拿取一个分数,随后玩家2继续从剩余数组任意一端拿取分数,然后玩家1拿,--.每次一个玩家只能拿取一个分数,分数被拿取之后不再可 ...
- Java实现 蓝桥杯VIP 算法训练 矩阵加法
时间限制:1.0s 内存限制:512.0MB 问题描述 给定两个N×M的矩阵,计算其和.其中: N和M大于等于1且小于等于100,矩阵元素的绝对值不超过1000. 输入格式 输入数据的第一行包含两个整 ...