STL map的使用(一)

在学习c++STL中的string,在这里做个笔记,以供自己以后翻阅和初学者参考。

一. map容器:

1. map简介:

map  是一个容器,它用于储存数据并且能从一个数据集合中取出数据。它的数据组成包含两项,一个是它的数据值,一个是用于排序的关键字。其中关键字是惟一的,它用于将数据自动排序。而每个元素的数据值与关键字无关,可以直接改变。

2. 需要加载的头文件:

#include<map>
using  namespace  std;

3.  模板原型:

template <
	class  Key,
	class  Type,
	class  Traits = less<Key>,
	class Allocator=allocator<pair <const Key, Type>>
>

4. 说明:

表 1 :map的参数说明

参数 含义
Key 存储在  map  容器中的关键字的数据类型
Type 储存在  map  容器中的数据值的数据类型
Traits 它是一个能提供比较两个元素的关键字来决定它们在 map容器中的相对位置。它是可选的,它的默认值是 less<key>
Allocator 它代表存储管理设备。它是可选的,它的默认值为allocator<pair <const  Key, Type> >


map容器有以下的特点:

(1)它是一个相关联的容器,它的大小可以改变,它能根据关键字来提高读取数据能力。

(2)它提供一个双向的定位器来读写取数据。

(3) 它已经根据关键字和一个比较函数来排好序。

(4)它的每一个元素的关键字都是唯一的。

(5)他是一个模板,他能提供一个一般且独立的数据类型。

5.  成员变量:

表2:map的成员变量说明

成员变量 功能说明
Allocator_type 对象分配器
Const_iterator
提供一个双向的定位器,他能读取map中的一个常元
Const_pointer 它能提供一个长常元的指针
Const_reference 一个常元的引用
Const_reverse_iterator 提供一个双向的定位器,使得能够在map容器中读取任意一个常值元素
Difference_type 它提供map容器中由定位器所指定的范围内的元素的个数
Iterator 提供一个双向入口定位器,使得能够在map中读取或者修改元素
key_compare 它是提供一个元素间的关键字的次序关系的函数
key_type 它描述每一个元素的关键字
mapped_type 他表示存储在map中的数据类型
pointer 提供一个指向map中的某元素的指针
reference 提供在map容器中的一个常元的引用
reverse_iterator 在反向的map容器中提供一个双向的入口定位器,使得能够读取或者修改元素
size_type map容器中元素个数
Value_type 它提供一个能根据关键字来比较两个元素的相对位置的函数

二. 函数:

1. map::begin:

功能:

返回第一元素的定位器(iterator)的地址。

语法:

const_iterator begin() const;

itrator begin();


说明:

当返回的第一个元素的地址值为一个常值定位器(_iterator),则map不会被修改。

当返回的第一个元素的地址值为一个定位器(iterator),这map可被修改。


函数返回值:

返回一个指向第一个元素的双向定位器地址。

示例1:

 
/***************************************************
程序编号: 1
程序功能说明:用begin来定位到ctr的开始位置,并打印出该元素。
***************************************************/

#include  <map>
#include  <iostream>

using  namespace  std;
int main()
{
	map<int,char> ctr;
	ctr.insert(pair<int,char>(1,'a'));
	ctr.insert(pair<int,char>(2,'b'));
	cp=ctr.begin();  //定位到ctr的开始位置
	cout<<"The  first  element  is:"<<cp->second<<endl;//打印出第一个元素
	return  0;
}
运行结果:

如图一所示:

STL map的使用(一)_第1张图片

2. map::clear:

功能 将一个容器的全部元素删除。
语法 void clear()
说明 clear会删除map容器的全部元素。
函数返回值


示例2:


/***************************************************
程序编号: 2
程序功能说明:先创建一个map容器,再用clear函数清空,最后打印是否为空的信息。
***************************************************/

#include  <map>
#include  <iostream>

using  namespace  std;
int main()
{
	map<int,char> ctr;
	ctr.insert(pair<int,char>(1,'a'));
	ctr.insert(pair<int,char>(2,'b'));
	ctr.insert(pair<int,char>(3,'c'));
	cp=ctr.clear();//清空  map  容器
	if (ctr.empty())//map  容器为空时
	{
		cout<<"The container is empty"<<endl;
	}
	else//map  容器为非空时
	{
		cout<<"The container is not empty"<<endl;
	}
	return  0;
}

运行结果:

如图二所示:

STL map的使用(一)_第2张图片

3. map::count:

功能: 返回对应某个关键字的元素的个数
语法: size_type count(
const Key& _Key
) const;
说明: _Key:是要进行匹配的关键字的值。
该函数的返回值的范围是[low_bound(_Key), upper_bound(_Key)]
因为map容器的关键字是唯一的,故他只能去0或者1.
函数返回值: 当map容器包含了关键字位_Key的这个元素时,返回1,否则返回0.


示例3:

/***************************************************
程序编号: 3
程序功能说明:先创建一个map容器,再用count函数来求出关键字位1的元素的个数。
***************************************************/
#include  <map>
#include  <iostream>
using  namespace  std;
int main()
{	
	map<int,char> ctr;	ctr.insert(pair<int,char>(1,'a'));	
	ctr.insert(pair<int,char>(2,'b'));	
	ctr.insert(pair<int,char>(3,'c'));
	int i;
	i=ctr.count(1);//求出关键字为1的元素的个数
	if (i==0)
	{		
		cout<<"There is no such key!"<<endl;	
	}	
	else
	{		
		cout<<"The number of key is: "<<i<<endl;	
	}	return  0;
}

运行结果:




你可能感兴趣的:(C++,map,STL)