//map是一个存储键值对的容器,也是一个双向链表

#include <iostream>

using namespace std;

#include <map>

int main(int argc, const char * argv[])

{

map<int, string> maplive;

maplive.insert(pair<int,string>(110,"April1"));

maplive.insert(map<int,string>::value_type(111,"April2"));

maplive[112] = "April3";

map<int,string>::iterator l_it,l_it2;

int i = maplive.size();

for (l_it = maplive.begin(); l_it != maplive.end(); ) {

if (l_it->first == 110) {

l_it2 = l_it;

l_it2++;

maplive.erase(l_it);

l_it = l_it2;

}

else

l_it++;

}

//打印

for (l_it = maplive.begin(); l_it != maplive.end();l_it++) {

cout << l_it -> second << endl;     //取值是second,取key是first

}

return 0;

}

C++ Maps是一种关联式容器,包含“关键字/值”对。
C++ Multimaps和maps很相似,但是MultiMaps允许重复的元素。 1.begin() 返回指向map头部的迭代器
2.clear() 删除所有元素
3.count() 返回指定元素出现的次数

语法:
size_type count( const KEY_TYPE &key ); //返回map中键值等于key的元素的个数

4.empty() 如果map为空则返回true 5.end() 返回指向map末尾的迭代器 6.equal_range() 返回特殊条目的迭代器对

语法:
pair equal_range( const KEY_TYPE &key ); 返回两个迭代器,指向第一个键值为key的元素和指向最后一个键值为key的元素

7.erase() 删除一个元素 语法:

void erase( iterator i ); //删除i元素
void erase( iterator start, iterator end ); //删除从start开始到end(不包括end)结束的元素 size_type erase( const key_type &key ); //删除等于key值的所有元素(返回被删除的元素的个数)

8.find() 查找一个元素 语法:

iterator find( const key_type &key );

11

//查找等于key值的元素,并返回指向该元素的迭代器;

//如果没有找到,返回指向集合最后一个元素的迭代器. 9.get_allocator() 返回map的配置器
10.insert() 插入元素

语法:
iterator insert( iterator pos, const pair<KEY_TYPE,VALUE_TYPE> &val ); //插入val到pos的后面,然后返回一个指向这个元素的迭代器
void insert( input_iterator start, input_iterator end );
//插入start到end的元素到map中
pair<iterator, bool> insert( const pair<KEY_TYPE,VALUE_TYPE> &val ); //只有在val不存在时插入val。返回指向被插入元素的迭代器和描述是否插入的bool值

11.key_comp() 返回比较元素key的函数 语法:

key_compare key_comp();

//返回一个用于元素间值比较的函数对象 12.lower_bound() 返回键值>=给定元素的第一个位置

语法:
iterator lower_bound( const key_type &key ); //返回一个指向大于或者等于key值的第一个元素的迭代器

13.max_size() 返回可以容纳的最大元素个数 14.rbegin() 返回一个指向map尾部的逆向迭代器 15.rend()返回一个指向map头部的逆向迭代器 16.size() 返回map中元素的个数

17.swap() 交换两个map 语法:

void swap( map &obj );

//swap()交换obj和现map中的元素
18.upper_bound() 返回键值>给定元素的第一个位置

语法:
iterator upwer_bound( const key_type &key ); //返回一个指向大于key值的第一个元素的迭代器

19.value_comp() 返回比较元素value的函数 语法:

value_compare value_comp(); //返回一个用于比较元素value的函数

map[C++]的更多相关文章

  1. mapreduce中一个map多个输入路径

    package duogemap; import java.io.IOException; import java.util.ArrayList; import java.util.List; imp ...

  2. .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法

    .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法 0x00 为什么需要Map(MapWhen)扩展 如果业务逻辑比较简单的话,一条主管道就够了,确实用不到 ...

  3. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  4. Java基础Map接口+Collections

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  5. 多用多学之Java中的Set,List,Map

            很长时间以来一直代码中用的比较多的数据列表主要是List,而且都是ArrayList,感觉有这个玩意就够了.ArrayList是用于实现动态数组的包装工具类,这样写代码的时候就可以拉进 ...

  6. Java版本:识别Json字符串并分隔成Map集合

    前言: 最近又看了点Java的知识,于是想着把CYQ.Data V5迁移到Java版本. 过程发现坑很多,理论上看大部分很相似,实践上代码写起来发现大部分都要重新思考方案. 遇到的C#转Java的一些 ...

  7. MapReduce剖析笔记之八: Map输出数据的处理类MapOutputBuffer分析

    在上一节我们分析了Child子进程启动,处理Map.Reduce任务的主要过程,但对于一些细节没有分析,这一节主要对MapOutputBuffer这个关键类进行分析. MapOutputBuffer顾 ...

  8. MapReduce剖析笔记之七:Child子进程处理Map和Reduce任务的主要流程

    在上一节我们分析了TaskTracker如何对JobTracker分配过来的任务进行初始化,并创建各类JVM启动所需的信息,最终创建JVM的整个过程,本节我们继续来看,JVM启动后,执行的是Child ...

  9. MapReduce剖析笔记之五:Map与Reduce任务分配过程

    在上一节分析了TaskTracker和JobTracker之间通过周期的心跳消息获取任务分配结果的过程.中间留了一个问题,就是任务到底是怎么分配的.任务的分配自然是由JobTracker做出来的,具体 ...

  10. MapReduce剖析笔记之三:Job的Map/Reduce Task初始化

    上一节分析了Job由JobClient提交到JobTracker的流程,利用RPC机制,JobTracker接收到Job ID和Job所在HDFS的目录,够早了JobInProgress对象,丢入队列 ...

随机推荐

  1. Course Schedule I & II

    There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have prer ...

  2. 大小端; union

    #include<stdio.h> #include <stdlib.h> typedef union { int m; char a[4]; }Node; int main ...

  3. cxGRID中的字段怎么能以0.00的格式显示

    CXGRID中的字段如何能以0.00的格式显示在CXGRID中如何让字段能以0.00的格式显示,我的字段是FLOAT类型,满意的马上给分! ------解决方案-------------------- ...

  4. Effective C++ -----条款40:明智而审慎地使用多重继承

    多重继承比单一继承复杂.它可能导致新的歧义性,以及对virtual继承的需要. virtual继承会增加大小.速度.初始化(及赋值)复杂度等等成本.如果virtual base classes不带任何 ...

  5. Linux内存管理原理

    本文以32位机器为准,串讲一些内存管理的知识点. 1. 虚拟地址.物理地址.逻辑地址.线性地址 虚拟地址又叫线性地址.linux没有采用分段机制,所以逻辑地址和虚拟地址(线性地址)(在用户态,内核态逻 ...

  6. ASM:《X86汇编语言-从实模式到保护模式》第10章:32位x86处理器的编程架构

    ★PART1:32位的x86处理器执行方式和架构 1. 寄存器的拓展(IA-32) 从80386开始,处理器内的寄存器从16位拓展到32位,命名其实就是在前面加上e(Extend)就好了,8个通用寄存 ...

  7. 【hadoop2.6.0】通过代码运行程序流程

    之前跑了一下hadoop里面自带的例子,现在顺一下如何通过源代码来运行程序. 我懒得装eclipse,就全部用命令行了. 整体参考官网上的:http://hadoop.apache.org/docs/ ...

  8. ubuntu下deb包的安装方法

    ubuntu下deb包的安装方法 简介 deb是debian linus的安装格式,跟red hat的rpm非常相似,最基本的安装命令是:dpkg -i file.deb dpkg 是Debian P ...

  9. Mysql源码分析--csv存储引擎

    一直想分析下mysql的源码,开始的时候不知道从哪下手,先从csv的文件存储开始吧,这个还是比较简单的.我是用的是mysql5.7.16版本的源码. csv源码文件在mysql源码的mysql-5.7 ...

  10. 解决 The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

    这个时候我们只需要flush privileges 一下就OK了,mysql> flush privileges;Query OK, 0 rows affected (0.01 sec)