iBinary C++STL模板库关联容器之map/multimap
一丶关联容器map/multimap 容器
map容器跟以上的容器都不同,它是一个 表存储结构. 也就是存储表的一个结构.
存储的是 key-value的方式.
所以我们使用的需要执行key的方式,以及key对应的value
它底层的实现结构也是key value形式.
map: 只能出现一个key. 多次key出现不会存储
multimap : 可以存储多个key.
二丶代码例子
使用map之前需要使用头文件
1.map的三种插入数据的方法
map<int, string> a;
multimap<int, string> b;
a.insert(pair<int, string>(1, "2"));
a.insert(map<int, string>::value_type(2, "3"));
a[0] = "3";
区别:
区别:
第一种第二种可以插入数据.如果是map则不可以插入重复数据.multimap可以
第三种方法并不是插入.我们可以赋值.其实也是覆盖了,第三种方法不适用multimap
2.求出map中有多少数据
int nsize = a.size();
cout << "map大小是 " << nsize << endl;
3.map集合的遍历
map<int, string>::iterator it = a.begin();
while (it != a.end())
{
cout << it->first << it->second << endl;
it++;
}
//遍历方式二.使用数组方式遍历
for (int i = 0; i < nsize; i++)
{
cout << a[i] << endl;
}
可以正向迭代也可以反向迭代.也可以使用数组方式迭代
4.验证map集合数据是否插入成功
//pair函数可以判断值是否插入成功,如果插入成功则是有值.返回迭代器.
pair<map<int, string>::iterator, bool> insert_pair; //第一个是map的迭代器类型,第二个是bool类型
insert_pair = a.insert(pair<int, string>(1, "2"));
if (insert_pair.second == true) {
cout << "插入成功" << endl;
}
else
{
cout << "插入失败" << endl;
}
5.map数据的查找
//map最重要的是查找.三种方法实现查找.
it = a.find(1);//传入key返回value的迭代器
if (it != a.end()) {
cout << "查找到的值 = " << it->second << endl;
}
//正向查找 lower_bound(key) 反向查找 upper_bound(key);
it = a.lower_bound(1);
it = a.upper_bound(2);
cout << "上届查找 " << it->second << endl;
6.Map集合删除元素以及清空元素
a.erase(it); //删除这个元素
a.clean(); //清空这个元素
7.map中常用的函数
12、
map的基本操作函数:
C++ maps是一种关联式容器,包含“关键字/值”对
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的函数
iBinary C++STL模板库关联容器之map/multimap的更多相关文章
- C++STL模板库关联容器之set/multiset
目录 一丶关联容器简介.set/multiset 二丶演示代码. 一丶关联容器简介.set/multiset 我们的序列容器,底层都是线性表构成的. 比如 vector list deque. 关联容 ...
- C++STL模板库序列容器之vector
目录 STL之Vecter 一丶STL简介 二丶Vector用法 1.vector容器的使用 2.vector迭代器. 3.vector中的方法. 三丶常用算法 1.常见算法中的算法方法. 2.sor ...
- C++STL模板库序列容器之List容器
目录 一丶List容器的存储结构 二丶丶STL中list容器的使用. 一丶List容器的存储结构 list容器底层是链表结构来维护的.跟vector不一样. vector是数组维护的.拥有连续内存.所 ...
- C++STL模板库序列容器之deque
目录 一丶队列容器deque简介 二丶使用代码演示 一丶队列容器deque简介 deque底层跟vector一样,都是数组维护.不同的是可以操作头部. 二丶使用代码演示 #define _CRT_SE ...
- C++ 关联容器之map插入相同键元素与查找元素操作
一.插入相同键元素操作 (1)insert方法 在map中的键必须是唯一的,当想map中连续插入键相同但值不同的元素时,编译和运行时都不会发生任何错误,系统会忽略后面的对已存在的键的插入操作,如 ma ...
- [知识点]C++中STL容器之map
UPDATE(20190416):写完vector和set之后,发现不少内容全部引导到map上了……于是进行了一定的描述补充与更正. 零.STL目录 1.容器之map 2.容器之vector 3.容器 ...
- C++ 泛型程序设计与STL模板库(1)---泛型程序设计简介及STL简介与结构
泛型程序设计的基本概念 编写不依赖于具体数据类型的程序 将算法从特定的数据结构中抽象出来,成为通用的 C++的模板为泛型程序设计奠定了关键的基础 术语:概念 用来界定具备一定功能的数据类型.例如: 将 ...
- STL标准库-容器-set与map
STL标准库-容器-set与multiset C++的set https://www.cnblogs.com/LearningTheLoad/p/7456024.html STL标准库-容器-map和 ...
- 09--STL关联容器(map/multimap)
一:map/multimap的简介 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. map中key值是唯一的.集合中的元素按一定的顺 ...
随机推荐
- C++入门笔记(二)变量和基本类型
变量和基本类型 一.基本内置类型 1.除去布尔类型和扩展的字符型外,其他整型可以分为带符号的和无符号的. 2.与其他整型不同,字符型被分为了三种:char.signed char 和 unsigned ...
- Pandas 0 数据结构Series
# -*- encoding:utf-8 -*- # Copyright (c) 2015 Shiye Inc. # All rights reserved. # # Author: ldq < ...
- Python使用ProtoBuffer
Python使用ProtoBuffer Protocol Buffers,是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储.通信协议等方面. 就可读性而言感 ...
- su;su -;sudo;sudo -i;sudo su;sudo su - 之间的区别
今天我们来聊聊su;su -;sudo;sudo -i;sudo su;sudo su -他们之间的区别. su :su 在不加任何参数,默认为切换到root用户,但没有转到root用户家目录下,也就 ...
- scala 下 sigmoid 与breeze.numeric.sigmoid差异对比
scala> val beforeInit = System.nanoTime;val handsgn = rd.map(x => 1.0 / (1.0 + Math.exp(-x))); ...
- Node.js(day3)
一.模块系统 1.什么是模块 Node.js中常用的核心模块有: http模块 fs文件系统模块 url模块 path模块 os系统模块 在使用Node.js中我们发现每个js之间是没有联系的,都是单 ...
- [SQL]LeetCode596. 超过5名学生的课 | Classes More Than 5 Students
SQL架构 Create table If Not Exists courses (student varchar(), )) Truncate table courses insert into c ...
- [Swift]LeetCode931. 下降路径最小和 | Minimum Falling Path Sum
Given a square array of integers A, we want the minimum sum of a falling path through A. A falling p ...
- Python 的字符串
Python 的字符串 在最新的 Python 3 版本中,字符串是以 Unicode 编码的,也就是说,Python 的字符串支持多语言,例如: print('包含中文的 str') 对于单个字符的 ...
- Ubuntu终端常用快捷键(精简)
Ubuntu中的许多操作在终端(Terminal)中十分的快捷,记住一些快捷键的操作更得心应手.在Ubuntu中打开终端的快捷键是Ctrl+Alt+T.其他的一些常用的快捷键如下: 快捷键与功能 Ta ...