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()函数
语法:
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值 |
我们一般这样用
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"计算其中每个字母出现的次数
应该为A:5,B:3,C:1,D:2.
用平常的方法会会稍微复杂一点,这一看就知道是种映射关系。
代码如下:
#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,而 T 在上述例子中是int 类型。默认的初始值为 0。
posted on 2012-01-27 18:16 java课程设计例子 阅读(154) 评论(0) 编辑 收藏 举报