c++ STL map容器成员函数

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对象的名字,两对象必须是同类型的。

时间: 2024-12-28 08:52:07

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

c++ STL stack容器成员函数

这是后进先出的栈,成员函数比较简单,因为只能操作栈顶的元素.不提供清除什么的函数. 函数 描述 bool s.empty() 栈是否为空(即size=0).若空,返回true,否则,false. void s.pop() 将栈顶的元素出栈,即删除最后进栈的元素. void s.push(新元素) 插入一个新元素到栈顶. int s.size() 返回栈中有多少个元素. 元素类型引用 s.top() 返回栈顶元素,不会删除.返回的是引用类型,即可以对该元素进行修改.若栈中为常量,则不能修改. sw

c++ STL deque容器成员函数

deque是双向队列,即可以在头部插入删除,也可以在尾部插入删除.内部并不连续,这一点和vector并不一样.可能第1个元素和第2个元素的地址是不连在一起的.在使用时用it迭代器会安全一点. 这是c++ 98标准的,不是c++11的.11标准新加的函数没在这里说明.里面大部分函数是经过测试的才得出的结论. 函数(下面将iterator简化为it) 描述 Void c.assign(it beg,it end)void c.assign(it n,元素类型  elem) 将拷贝[beg; end)

c++ STL list容器成员函数

list是一个双链表. 函数 描述 void l.assign (int n, const val) void l.assign (it first, it last) 将链表l初始化为n个相同的val元素. 将链表l初始化为从first到last指针所指向的这一段区域内的元素.It指针同l是一个类型的.方便将另一个链表中的某一段连续的元素copy到新链表. reference l.back () 返回最后一个元素.经测试,可以直接l.back()=元素. It l.begin() 返回第1个元

C++ STL map容器的说明测试1

// maptest.cpp : 定义控制台应用程序的入口点.// #include "stdafx.h" /************************************************************************** Map的特点: 1.存储Key-value对* 2.支持快速查找,查找的复杂度基本是Log(N)* 3.快速插入,快速删除,快速修改记*/**********************************************

stl::map之const函数访问

如何在const成员数中访问stl::map呢?例如如下代码: string ConfigFileManager::MapQueryItem(const string& name) const { if (_map_name_value.find(name) != _map_name_value.end()) { return _map_name_value[name]; } return ""; } 上面的代码会报错:error C2678: 二进制“[”: 没有找到接受“c

STL容器 成员函数对比表

Sequence containers Associative containers   Headers <vector> <deque> <list> <set>   <bitset> Members complex vector deque list set multiset map multimap bitset constructor * constructor constructor constructor constructor co

C++ STL map和multimap

1.map简介 map 是关联容器的一种,map 的每个元素都分为关键字和值两部分,容器中的元素是按关键字排序的,并且不允许有多个元素的关键字相同. 注意:不能直接修改 map 容器中的关键字.因为 map 中的元素是按照关键字排序的,当关键字被修改后,容器并不会自动重新调整顺序,于是容器的有序性就会被破坏,再在其上进行查找等操作就会得到错误的结果.要使用 map,必须包含头文件 <map>. 2.map的定义 template < class Key, class T, class P

C++STL(vector,map,set,list)成员函数整理

/ *最近ACM比赛,用到的时候忘记成员函数了,贼尴尬,给以后比赛做下准备 */ LIST: 构造函数 list<int> c0; //空链表 list<int> c1(3); //建一个含三个默认值是0的元素的链表 list<int> c2(5,2); //建一个含五个元素的链表,值都是2 list<int> c4(c2); //建一个c2的copy链表 list<int> c5(c1.begin(),c1.end()); ////c5含c1一

c++ 提高4 map容器 共性机制 使用时机 比较| STL算法 算法基础仿函数 谓词 函数适配器 遍历算法

[本文谢绝转载] <大纲> STL 容器 map 容器的4中初始化 遍历 map容器 元素的删除观测map.insert返回值,方法123,已存在就报错,初始化方法4会覆盖 map的查找,异常处理 map容器的range返回两个迭代器 multimap案例,按照部门_增删员工信息 容器共性机制 把对象放到容器中,会自动执行拷贝构造函数 各个容器的使用时机 vector与deque的比较: 算法 算法基础 函数对象(仿函数) 函数对象 与普通函数的区别:--  相同之处 函数对象 与普通函数的区