博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL map映照容器(一)map创建、元素插入、元素删除和遍历访问
阅读量:4005 次
发布时间:2019-05-24

本文共 1354 字,大约阅读时间需要 4 分钟。

map映照容器的元素数据是由一个键值和一个映照数据组成的,键值与映照数据之间具有一一映照的关系。

map映照容器的数据结构是采用红黑树来实现的,插入元素的键值不允许重复,比较函数只对元素的键值进行比较,元素的各项数据可通过键值检索出来。

键值 映照数据
Name Number
Tom 98
Tony 96
Amy 97

使用map容器需要头文件包含语句#include <map>

1.map创建、元素插入和遍历访问

创建map对象,键值与映照数据的类型由自己定义。在没有指定比较函数时,元素的插入位置是按键值由小到大插入到红黑树中去的,这点和set一样。

下面这个程序详细说明了如何操作map容器。

#include #include 
#include
using namespace std;int main(){
map
m; //定义map对象,当前没有任何元素 m["Tom"]=98; m["Tony"]=96; m["Amy"]=97; //插入元素,按键值的由小到大放入红黑树中 map
::iterator it; for(it=m.begin();it!=m.end();it++) {
cout<<(*it).first<<" : "<<(*it).second<

运行结果:

Tom : 96
Tony : 98.5
Amy : 97.5

程序编译时,会产生代号为“warning C4786”的警告,“4786”是标记符超长警告的代号。可以在程序的头文件包含代码前使用#pragma warning(disable:4786)宏语句,强制编译器忽略该警告。4786号警告对程序的正确性与运行并无影响。

2.删除元素

set容器一样,map容器的erase()删除元素函数,可以删除某个迭代器位置上的元素、等于某个元素的值、一个迭代器区间上的所有元素。当然也可以使用clear()方法清空map映照容器。

下面这个程序演示了删除map容器中键值为28的元素:

#pragma warning (disable:4786)#include #include 
#include
using namespace std;int main(){
map
m; //定义map对象,当前没有任何元素 m[25]='m'; m[28]='k'; m[10]='x'; m[30]='a'; //插入元素,按键值的由小到大放入红黑树中 m.erase(28); //删除键值为28的元素 map
::iterator it; for(it=m.begin();it!=m.end();it++) {
cout<<(*it).first<< : <<(*it).second<

运行结果:

10 : x
25 : m
30 : a

转载地址:http://xkzfi.baihongyu.com/

你可能感兴趣的文章
nginx+tomcat+memcached (msm)实现 session同步复制
查看>>
c++指针常量与常量指针详解
查看>>
c++字符数组和字符指针区别以及str***函数
查看>>
c++的string类初始化及其常用函数
查看>>
c++类的操作符重载注意事项
查看>>
c++模板与泛型编程
查看>>
STL::deque以及由其实现的queue和stack
查看>>
CS4344驱动
查看>>
WAV文件解析
查看>>
DAC输出音乐2-解决pu pu 声
查看>>
WPF中PATH使用AI导出SVG的方法
查看>>
WPF UI&控件免费开源库
查看>>
QT打开项目提示no valid settings file could be found
查看>>
Win10+VS+ESP32环境搭建
查看>>
Ubuntu+win10远程桌面
查看>>
flutter-实现圆角带边框的view(android无效)
查看>>
flutter-实现一个下拉刷新上拉加载的列表
查看>>
android 代码实现圆角
查看>>
postman调试webservice接口
查看>>
flutter-解析json
查看>>