map详讲<二>
查找元素:
Map可以根据健来查找元素,提供方法find(key),如果是这个健对应的元素存在,则返回的是这个健的迭代器iterator,否则返回的是std::end(); 使用find()函数有点笨拙,但是还是必须的有时候,如果是只想知道有木有这个健对应的元素,则可以使用count(key),因为是map所以键值是唯一的,count(key)返回的是这个健的元素个数
在map中返回1表示存在这个元素,0表示不存在这个元素。
删除元素:
map也提供erase(key);删除对应键值的元素;
插入实例:
- #include <iostream>
- #include <map>
- class BankInfo
- {
- public:
- BankInfo():mID(),mName(""){}
- BankInfo(int id,const std::string& name)
- :mID(id),mName(name)
- {
- }
- void setID(int id){mID = id;}
- int getID(){return mID;}
- void setName(std::string name) {mName = name;}
- std::string getName() {return mName;}
- private:
- int mID;
- std::string mName;
- };
- class BankDB
- {
- public:
- bool addAcount(BankInfo dbInfro);
- void delAcount(int key);
- BankInfo& getKey(int key);
- BankInfo& getName(const std::string& name);
- private:
- std::map<int,BankInfo> mClients;
- };
- bool BankDB::addAcount(BankInfo dbInfro)
- {
- auto ret = mClients.insert(std::make_pair(dbInfro.getID(),dbInfro));
- if(ret.second)
- {
- return true;
- }
- return false;
- }
- void BankDB::delAcount(int key)
- {
- mClients.erase(key);
- }
- BankInfo& BankDB::getKey(int key)
- {
- auto ret = mClients.find(key);
- if(ret == std::end(mClients))
- {
- throw std::out_of_range("out of range");
- }
- return ret->second;
- }
- BankInfo& BankDB::getName(const std::string& name)
- {
- auto ret = std::begin(mClients);
- for(;ret != std::end(mClients);++ret)
- {
- if(ret->second.getName() == name)
- {
- return ret->second;
- }
- }
- throw std::out_of_range("out of range");
- }
- int main()
- { BankDB db;
- db.addAcount(BankInfo(,"abc"));
- db.addAcount(BankInfo(,"bcd"));
- db.addAcount(BankInfo(,"cde"));
- try {
- auto ret = db.getKey();
- std::cout << "key[" << ret.getID() << "]" << " ";
- std::cout << "value :" << ret.getName() << std::endl;
- auto ret1 = db.getName("cde");
- std::cout << "key[" << ret1.getID() << "]" << " ";
- std::cout << "value :" << ret1.getName() << std::endl;
- auto ret2 = db.getName("dfe");
- std::cout << "key[" << ret2.getID() << "]" << " ";
- std::cout << "value :" << ret2.getName() << std::endl;
- }catch (const std::out_of_range&)
- {
- std::cout << "Not find this value" << std::endl;
- }
- return ;
- }
结果是:
key[1] value :abc
key[3] value :cde
Not find this value
map详讲<二>的更多相关文章
- vector详讲(二)迭代器
先看一下代码: #include <iostream> #include <vector> int main() { std::vector<double> dou ...
- zTree应用实例详讲(3)
zTree应用实例详讲(3) 上一讲中,已经讲到了重命名与删除.那么这一讲,我们来做新建文件夹. 其实新建是非常简单的,想一下我们想要的效果:点击新建,然后在一个节点下面出现一个新建的文件夹,并且与此 ...
- zTree应用实例详讲
zTree应用实例详讲(1) 因为项目的需要,要创建一棵动态的文件树,此树除了实现异步获取子节点外,还要实现对树节点的增.删.改.查.移动.重命名.批量删除.批量移动. 每一个操作都要和数据库打交道. ...
- SQL优化 MySQL版 - 多表优化及细节详讲
多表优化及细节详讲 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 注:本文章需要MySQL数据库优化基础或观看前几篇文章,传送门: B树索引详讲(初识SQL优化,认识索引):htt ...
- PopUpWindow使用详解(二)——进阶及答疑
相关文章:1.<PopUpWindow使用详解(一)——基本使用>2.<PopUpWindow使用详解(二)——进阶及答疑> 上篇为大家基本讲述了有关PopupWindow ...
- Android View 的绘制流程之 Layout 和 Draw 过程详解 (二)
View 的绘制系列文章: Android View 的绘制流程之 Measure 过程详解 (一) Android View 绘制流程之 DecorView 与 ViewRootImpl 在上一篇 ...
- List、Set、Map详解及区别
一.List接口 List是一个继承于Collection的接口,即List是集合中的一种.List是有序的队列,List中的每一个元素都有一个索引:第一个元素的索引值是0,往后的元素的索引值依次+1 ...
- .NET DLL 保护措施详解(二)关于性能的测试
先说结果: 加了缓存的结果与C#原生代码差异不大了 我对三种方式进行了测试: 第一种,每次调用均动态编译 第二种,缓存编译好的对象 第三种,直接调用原生C#代码 .net dll保护系列 ------ ...
- iOS开发——语法篇OC篇&高级语法精讲二
Objective高级语法精讲二 Objective-C是基于C语言加入了面向对象特性和消息转发机制的动态语言,这意味着它不仅需要一个编译器,还需要Runtime系统来动态创建类和对象,进行消息发送和 ...
随机推荐
- mongo_connector.oplog_manager:670 - Exception during collection dump
今天再整合mongodb和elasticsearch时,执行最后一步命令 “mongo-connector -m -m localhost:8090 -t -t -t localhost:9200 ...
- 对JDK、JRE和JVM的一些浅薄理解
JDK:JDK(Java Development Kit),顾名思义是java程序的开发包,任何java程序想要运行都需要相应版本的JDK,可以到oracle下载(下载之后自带JRE和编译工具等,无需 ...
- JMX 远程监控 Linux tomcat 功能实现
作者远程服务器操作系统 CentOS 7.0, tomcat 版本 7.0 1. Linux tomcat 配置 1.1 catalina_opt 配置 可以在 catalina.sh 文件中添加如下 ...
- 解决:IDEA springmvc maven 项目搭建完后没有生成 webcontent 目录
前言:发现项目创建好,配置好,写好测试代码,一看没有 webcontent 目录. 问题: 解决方案: ctrl + alt + Shift + S
- 将Windows上的Oracle迁移至Linux
迁移前提: 1.在安装Linux数据库实例时,注意选择的编码格式要与Windows的数据库实例一致. 迁移步骤 1.检查Linux上数据库实例的编译格式 SQL> select userenv( ...
- Spring中的BeanFactory和ApplicationContext的区别
我用一个例子去测试BeanFactory和ApplicationContext的区别 首先建立一个bean public class User { //声明无参构造,打印一句话,监测对象创建时机 pu ...
- Mac里用终端ssh远程连接Centos服务器
在mac终端下输入 ssh -l root *.*.*.* 就可以远程连接Centos服务器了,端口没变还是:22 如果改变端口用下面方法输入: ssh -p 448(你改变的端口) -l root( ...
- 3d图片点击切换
效果图: 代码块: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...
- <Android 应用 之路> 百度地图API使用(4)
前言 百度地图的定位功能和基础地图功能是分开的,使用的是另外的jar包和so库文件,详情请关注官网: 百度定位SDK 配置 下载对应的jar包和so库,然后移动到lib目录下 AS中注意事项 sour ...
- 新手嘛,先学习下 Vue2.0 新手入门 — 从环境搭建到发布
Vue2.0 新手入门 — 从环境搭建到发布 转自:http://www.runoob.com/w3cnote/vue2-start-coding.html 具体文章详细就不搬了,步骤可过去看,我这就 ...