STL容器类map学习
来源:互联网 发布:知乎玲珑邪僧 编辑:程序博客网 时间:2024/05/23 02:00
map类定义了一个关联容器,并且在容器中使用唯一的关键字(任何两个元素的键都不相同)来映射相应的值。从本质上来说,关键字就是值的名字。在map对象中存储了一个值之后,就可以通过关键字来获得它。map对象是一系列关键字/值的匹配对。
map的主要功能在于:只有你知道了一个值的关键字,就能够找到这个值。例如,定义一个map对象m,在该对象中使用人名作为关键字,并将每个人的电话号码存储为值。那么可以使用m[“张三”]表示张三的电话号码。从前面的例子可以看出map类有一个非常优越的特点:关联数组。在普通的数组中,索引是一个整数。而在关联数组中,索引是一个键,并且键可以是任意类型的,可以是String、double、int类型,甚至可以是一些用户定义的类。
map和set的插入删除效率比用其他序列容器高,因为对于关联容器来说,不需要做内存拷贝和内存移动。map和set容器内所有元素都是以节点的方式来存储,其节点结构和链表差不多,指向父节点和子节点。结构图可能如下:
A
/ /
B C
/ / / /
D E F G
因此插入的时候只需要稍做变换,把节点的指针指向新的节点就可以了。删除的时候类似,稍做变换后把指向删除节点的指针指向其他节点就OK了。这里的一切操作就是指针换来换去,和内存移动没有关系。
每次insert之后,以前保存的iterator不会失效,因为iterator是指向节点的指针,内存没有变,指向内存的指针当然不会失效。
函数列表如下:
begin() 返回指向map头部的迭代器
clear() 删除所有元素
count() 返回指定元素出现的次数
empty() 如果map为空则返回true
end() 返回指向map末尾的迭代器
equal_range() 返回特殊条目的迭代器对
erase() 删除一个元素
find() 查找一个元素
get_allocator() 返回map的配置器
insert() 插入元素
key_comp() 返回比较元素key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size() 返回可以容纳的最大元素个数
rbegin() 返回一个指向map尾部的逆向迭代器
rend() 返回一个指向map头部的逆向迭代器
size() 返回map中元素的个数
swap() 交换两个map
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数
示例:
#include<iostream>
#include <fstream>
#include<map>
#include<string>
using namespace std;
void main()
{
map<string,int> m,n;
string key;int value;
value=1;key="A12";
m[key]=value;
value=5;key="A3";
m[key]=value;
m["D5"]=4;
m["A2"]=5;
map<string,int>::iterator p=m.begin();//定义m对象的迭代器,并输出m中所有项
p++;p++;
m.insert(p,pair<string,int>("A1",7));
m["B6"]=3;
p=m.begin();
for (int i=0; i<m.size(); i++)
{
cout <<p->first <<" "<<p->second <<endl;//first指向关键字,second指向值
p++;
}
cout<<m.count("E")<<endl;
}
输出结果:
A1 7
A12 1
A2 5
A3 5
B6 3
D5 4
0
- STL容器类map学习
- STL学习之map容器
- STL学习之map容器
- STL学习(一)map容器学习
- STL学习之map容器(1)
- STL学习之map容器(0)
- STL学习之map容器(3)
- C++ STL--map映照容器学习笔记
- STL学习笔记——map容器
- STL学习之map容器-insert
- STL学习笔记之容器--map
- STL学习笔记-map/multimap容器
- 【STL容器学习】-关联容器与map的使用方法
- STL容器--关联容器map
- STL::map关联容器
- STL容器之map
- STL之Map容器
- STL容器:map,multimap
- 【storm kafka】RROR fetching topic metadata for topics [Set(order)] from broker [ArrayBuffer(id:0,host
- 从头思考并查集
- 搭建基于GTID的复制方式
- Halcon-Matlab 图像匹配
- [cocos2dx]在windows7下搭建Cocos2D-X win32开发环境
- STL容器类map学习
- [python]糗百热点爬虫
- 整数转换成罗马数字
- 真假硬币
- kft-activiti-demo学习(目录)
- 云计算的鉴权和租户管理
- Qt数据库之访问 SQLite
- CentOS6.5二进制包安装MySQL5.6
- Qt 访问 MySQL