您的位置:首页 > 理论基础 > 数据结构算法

c++ 数据结构之STL之 map

2014-04-04 21:07 288 查看
标准模板库STL中的map

map与之前的set中内容大致相同,但是,保存的数据多了一项保存的数值型数据,即,map可以用一个专门的key来进行排序和搜索,而在Type中储存所需要保存的各类数据。对于map也有一个multimap,储存多个相同key值的数据。

stl中的所有模版都储存在std命名空间中。

#include <map>
using namespace std;

模板原型: 

template <    class Key,   关键字,用来比较,排序,搜索

   class Type,   储存在map中的数值数据,保存各种数据。

   class Traits = less<Key>,      关键字比较函数,可以重定义,定义方法与set类似
class Allocator=allocator<pair <const Key, Type> >  >
储存管理设备,默认为allocator<pair<const Key,Type>>

由于map比set多了一个专门用来储存的Type,则其可储存更多东西,且可以使用默认的比较函数来进行判断,而专门的用一个函数来计算得到其关键字,更方便于比较,搜索。

begin(),

返回指向首元素的定位器iterator.

clera();清空所有元素。void
count(<template> Key):返回对应Key的元素个数

count(<template> Key):返回对应Key的元素个数,一般时0或1

empty():测试是否为空

end():返回最后一个元素的定位器

equal_range():返回一对定位器,一个指向>=
给定值的第一个Key,>给定值的第一个key。

erase();将一定范围内的元素删除,删除指定元素的方法:

map<int,string> a;
a.insert(pair<int,string>(compute("aab"),"aab"));
a.insert(pair<int,string>(compute("aca"),"caa"));
a.insert(pair<int,string>(compute("aaa"),"aaa"));
a.insert(pair<int,string>(compute("agg"),"baa"));
map<int,string>::iterator p;
p=a.find(compute("agg"));
a.erase(p);

find(template
Key):找出与给定key相同的定位器,若不存在,指向set的结束定位器。

get_allocator():返回set容器的一个allocator的副本

insert() 插入一个元素或一定数量的元素到应该的位置

map<int,string> a;
a.insert(pair<int,string>(compute("aab"),"aab"));
a.insert(pair<int,string>(compute("aca"),"caa"));
a.insert(pair<int,string>(compute("aaa"),"aaa"));
a.insert(pair<int,string>(compute("aab"),"baa"));

ower_bound() 返回指向大于(或等于)某值的第一个元素的迭代器

key_comp() 返回一个用于元素间值比较的函数

max_size() 返回集合能容纳的元素的最大限值

rbegin() 返回指向集合中最后一个元素的反向迭代器

rend() 返回指向集合中第一个元素的反向迭代器

size() 集合中元素的数目

swap() 交换两个指定对象的值。是指保存的数据交换,key保存不变

upper_bound() 返回大于某个值元素的迭代器

value_comp() 返回一个用于比较元素间的值的函数

operator[key]     寻找指定key的元素,并插入值,若未规定值,则值为默认值

map<int,string> a;
a.insert(pair<int,string>(compute("aab"),"aab"));
a.insert(pair<int,string>(compute("aca"),"caa"));
a.insert(pair<int,string>(compute("aaa"),"aaa"));
a.insert(pair<int,string>(compute("aab"),"baa"));
a[6]="awfawf";
a[2];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 学习 数据结构