map容器用于查找,设置键值和元素值,输入键值,就能得到元素值。map对象中的元素时刻都是有序的,除非无序插入的。它是用平衡树创建的。查找很快。

函数

描述,注意有r的地方都是不能用it代替的。

map (comp,alloc)

map (it first, it last, comp,alloc)

map (map& x)

Comp为比较函数,用于排序,alloc不用鸟它。两个参数有默认值,可不填,按默认的。创建空map。

用一段元素填充,并设置排序函数。

拷贝x中的元素并创建新map。估计新的map对象的comp也是和x一样。

mapped_type& m.at (key_type& k)

返回键值k对应的元素值,回值引用类型的。

it m.begin()

返回第1个元素的地址,也就是有序的首个元素。

const_it m.cbegin()

功能同上,但是不能修改此元素。

const_it m.cend()

返回最后一个元素的下一个元素的地址,不可修改元素值。若容器为空,则返回同cbegin。

Void m.clear()

清空容器内所有元素。

int m.count(key_type& k)

若键值k对应的元素存在,则返回1,否则0。

const_rit m.crbegin()

返回最后一个元素的地址。

const_rit m.crend()

返回首个元素的前一个元素地址,该地址无元素。

pair<it,bool> m.emplace (键值,单个元素)

插入。若键值不存在,则插入,并返回一对参数分别为元素地址和true。否则返回已存在的那个元素地址和false。

it m.emplace_hint (it pos,单个元素)

插入。若键值不存在,则插入到pos所指位置,并返回该地址。否则返回已存在的那个元素地址。这样插就不一定会保证有序了。

bool m.empty()

若容器为空,则返回true,否则false。

it m.end()

返回最后一个元素的下一个元素地址。该地址无元素。

pair<it,it>             m.equal_range (k)

返回键值k的元素位置,包括首地址和尾地址,这两个指针内只有一个元素。若不存在k,则返回两个begin的地址。

void m.erase (it pos)

int m.erase (k)

void m.erase (it first, it last)

删除pos地址的元素。

删除键值为k的元素,返回剩余元素个数。

删除一段元素,last所指元素不删。

it m.find(k)

寻找键值为k的元素,并用返回其地址。找不到则返回end的地址。

Get_allocator

不懂

pair<it,bool> m.insert (val)

it m.insert (it pos, val)

void m.insert (It first, It last)

插入元素。例如mymap.insert ( std::pair<char,int>('a',100) )并返回其地址和true。Pair也可以定义成一个变量形式的。

插入val到指定的pos位置,返回pos。若失败,it指向已存在的那个元素。

将first到last的一段元素插入进去。

key_compare m.key_comp()

返回m的比较对象。类似于返回了一个函数,此函数可用来比较两个map中的元素大小,参数是两个键值。

It m.lower_bound (k)

返回键值k的元素的首地址。

Int m.max_size()

返回能容纳元素的数量。

map& operator= (const map& x)

复制。将一个map对象复制到另一对象。注:1对象可包含多个元素。

mapped_type& operator[] (const key_type& k)

可以用下标法查找元素。比如m[10]表示返回键值为10的元素,不输出键值。

rit m.rbegin()

返回反向的首元素的地址,得用反向指针。

rit m.rend()

返回正向的首元素的地址,也就是反向的尾地址了。

int m.size()

返回map中已存在元素的数量。

It m.upper_bound (k)

返回键值为k的元素的末地址,该地址是其他元素。

void m.swap(map& x)

将两个map对象换名字。

value_compare m.value_comp()

返回元素比较函数,可以用于比较值大小。例如mymap.value_comp()(*it, highest)这里highest的类型是pair型的,即std::pair<char,int>

bool operator== ( const map<Key,T,Compare,Alloc>& lhs,const map<Key,T,Compare,Alloc>& rhs );

bool operator!= ( const map<Key,T,Compare,Alloc>& lhs,const map<Key,T,Compare,Alloc>& rhs );

bool operator<  ( const map<Key,T,Compare,Alloc>& lhs,const map<Key,T,Compare,Alloc>& rhs );

bool operator<= ( const map<Key,T,Compare,Alloc>& lhs, const map<Key,T,Compare,Alloc>& rhs );

bool operator>  ( const map<Key,T,Compare,Alloc>& lhs, const map<Key,T,Compare,Alloc>& rhs );

bool operator>= ( const map<Key,T,Compare,Alloc>& lhs,const map<Key,T,Compare,Alloc>& rhs )

void swap (map& x, map& y)

交换两个map对象的名字,两对象必须是同类型的。

c++ STL map容器成员函数的更多相关文章

  1. c++ STL stack容器成员函数

    这是后进先出的栈,成员函数比较简单,因为只能操作栈顶的元素.不提供清除什么的函数. 函数 描述 bool s.empty() 栈是否为空(即size=0).若空,返回true,否则,false. vo ...

  2. c++ STL deque容器成员函数

    deque是双向队列,即可以在头部插入删除,也可以在尾部插入删除.内部并不连续,这一点和vector并不一样.可能第1个元素和第2个元素的地址是不连在一起的.在使用时用it迭代器会安全一点. 这是c+ ...

  3. c++ STL list容器成员函数

    list是一个双链表. 函数 描述 void l.assign (int n, const val) void l.assign (it first, it last) 将链表l初始化为n个相同的va ...

  4. 详解C++ STL map 容器

    详解C++ STL map 容器 本篇随笔简单讲解一下\(C++STL\)中的\(map\)容器的使用方法和使用技巧. map容器的概念 \(map\)的英语释义是"地图",但\( ...

  5. C++ STL map容器值为指针时怎么释放内存

    最近在使用STL中map时,遇到了一个问题,就是当map中值为指针对象时怎么释放内存? // 站点与TCP连接映射表 (key为ip_port_stationCode, value为 clientSo ...

  6. c++使用map保存成员函数地址

    note 本基于c++11介绍一种使用map保存成员函数地址 可避免使用 if 和 switch 配置灵活 方便, 代码维护效率高 结果: 范例开始 头文件包含 #include <iostre ...

  7. stl::map之const函数访问

    如何在const成员数中访问stl::map呢?例如如下代码: string ConfigFileManager::MapQueryItem(const string& name) const ...

  8. STL --> map容器

    map容器 一.map简介 map是一类关联式容器.它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响.对于迭代器来说,可以修改实值,而不能修改key. 二.ma ...

  9. STL容器 成员函数 时间复杂度表

    Sequence containers Associative containers   Headers <vector> <deque> <list> <s ...

随机推荐

  1. 为什么Java的hash表的长度一直是2的指数次幂?为什么这个(hash&(h-1)=hash%h)位运算公式等价于取余运算?

    1.什么是hash表? 答:简单回答散列表,在hash结构散列(分散)存放的一种数据集结构. 2.如何散列排布,如何均匀排布? 答:取余运算 3.Java中如何实现? 答:hash&(h-1) ...

  2. C#对Execl操作类

    1.NuGet下安装 NPOI 2.实例代码:(可以根据具体情况注释和添加代码逻辑) public class ExeclHelper { /// <summary> /// 将excel ...

  3. Postman使用-1

    文章来源:http://www.cnplugins.com/tool/specify-postman-methods.html https://www.cnblogs.com/Skyyj/p/6856 ...

  4. CODING 告诉你硅谷的研发项目管理之道(4)

    写在前面 优秀的项目管理者是怎么工作的,如何帮助研发团队高效工作?一直是 CODING 关注的重要话题,我们不断地打磨 CODING 研发系统来让开发更简单.近期我们精心挑选了几篇硅谷科技公司研发管理 ...

  5. PAT1089【归并排序】

    这题略...恶心.. 他说归并排序依次是相邻有序两块合并,而一向打惯了递归??? #include <bits/stdc++.h> using namespace std; typedef ...

  6. 初识SVN

    前言 我们都知道每一件工具的诞生都是为了方便我们的生活.SVN(Subversion)学习工具在我们"合作"开发软件过程中起到了很大的作用.说起SVN先说说SCM. 内容 SCM ...

  7. P3379 【模板】最近公共祖先(LCA)(倍增)

    这题有毒!!!!!!!!!! TM我重新打的板子,然而...... 5分钟打完 debug两小时 我的写法常数太大了 每次DFS都要For去更新F 最后写了快读才A 改: 只处理f[i][0] dfs ...

  8. 当构造方法参数过多时使用builder模式

    静态工厂和构造方法都有一个限制:它们不能很好地扩展到很多可选参数的情景.请考虑一个代表包装食品上的营养成分标签的例子.这些标签有几个必需的属性——每次建议的摄入量,每罐的份量和每份卡路里 ,以及超过 ...

  9. c# 手动实现 \u 转义字符。。效果。。。

    string s ="\\u"+item.Icon; // item.Icon = UnicodeEncoding.Unicode.GetString(UnicodeEncodin ...

  10. Django基础(1)

    昨日内容回顾: 1. socket创建服务器 2. http协议: 请求协议 请求首行 请求方式 url?a=1&b=2 协议 请求头 key:value 请求体 a=1&b=2(只有 ...