STL map

 STL   map

   Map是一种关联容器,它的内部组织形式是一颗红黑树(非严格意义上的平衡二叉树),根据key值快速查找记录时间复杂度为log(N), 它具有自动排序功能,所以它里面的元素都是按关键值有序的。它用的比较频繁,所以介绍一下它的用法。

使用map必须包含头文件 #include<map>

1.map的构造

  map对象是模板类,需要关键字和存储对象两个模板参数:

   map <string, string> mapstudent;

2.在map中搜索

 在不插入元素的情况下,如果你想检查某个元素是否存在,可以使用 find()成员函数。find()有两个重载的版本:

iterator find(const key_type& k);/

const_iterator find(const key_type& k) const;/通过键值查找后返回该值所在的位子

3、在map中插入元素  

insert()函数

insert

语法: 

  iterator insert( iterator pos, const pair<KEY_TYPE,VALUE_TYPE> &val );

插入valpos的后面,然后返回一个指向这个元素的迭代器

void insert( input_iterator start, input_iterator end );

插入startend的元素到map

  pair<iterator, bool> insert( const pair<KEY_TYPE,VALUE_TYPE> &val );

只有在val不存在时插入val。返回值是一个指向被插入元素的迭代器和一个描述是否插入的bool

我们一般这样用

map<int ,string> mapstudent;

Mapstudent.insert(pair<int ,string>(1,"student_one"));

4、从map中删除元素 

移除某个map中某个条目用erase() 
该成员方法的定义如下

1 iterator erase(iterator it); //通过一个条目对象删除

2 iterator erase(iterator first, iterator last); //删除一个范围

3 size_type erase(const Key& key); //通过关键字删除

5.map遍历

以例题来讲解会比较简单一点。

字符串"AAAAABBBCDD"计算其中每个字母出现的次数

应该为A5B3C1D2.

用平常的方法会会稍微复杂一点,这一看就知道是种映射关系。

代码如下:

#include<map>

#include<iostream>

Using namespace std;

  char s[100]; 

  map<char,int> map1;

 cin>>s;

 for(int  i=0;i<strlen(s);i++)

      map1[s[i]]++;

因为表达式map[key]返回与键值关联的值。
幸运的是,map 并不包含一个必须要初始化的键值,表达式:map[key]

返回默认的初始化 T,而 在上述例子中是int 类型。默认的初始值为 0


         

posted on 2012-01-27 18:16  java课程设计例子  阅读(154)  评论(0编辑  收藏  举报