关于映射关系的创建

**说起映射,有多重,这里我们简单介绍一对一映射,**就拿ASILL码和字符来说,一个字符对应一个ASILL值,如果我想要获取对应的值,可以通过映射关系获取,当然也可以通过强制转换获取,这里我们主要浅谈映射关系的建立以及使用方法.

因此,我们定义了需要建立映射的两个数据结构,
#define MAX 36
char stdASILL[MAX ]={‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,
‘A’,‘B’,‘C’,‘D’,‘E’,‘F’,‘G’,‘H’,‘I’,‘J’,‘,K’,‘L’,
‘M’,‘N’,‘O’,‘P’,‘Q’,‘R’,‘S’,‘T’,‘U’,‘V’,‘W’,‘X’,‘Y’,‘Z’};
int STDASILL[MAX ]={48,49,50,51,52,53,54,55,56,57,
65,66,67,68,69,70,71,72,73,74,75,76,
77,78,79,80,81,82,83,84,85,86,87,88,89,90};
通过这样的定义,我们就把ASILL和数值建立起了一对一的对应关系,那么我们怎么应用,实现输入一个字符立马知道对应的值呢?
这里应用的技术就是map,我们可以定义以下两种对应关系:
字符—>数值:
typedef map<char,int>char2INT;
数字—>字符:
typedef map<int,char>INT2char;
第一种字符对应ASILL的值,第二种就是反过来,数字对应的字符.
接着我们定义两个变量
char2INT mchar2Int;
INT2char mInt2Char;
接下来,我们创建Mapping映射关系.
void IniMapList()
{
for (int i=0;i<MAX ;i++)
{
mchar2Int.insert(make_pair(stdASILL[i],STDASILL[i]));
mInt2Char.insert(make_pair(STDASILL[i],stdASILL[i]));
}

}
接下来我们直接去获取对应的映射关系值:
int GetChar2Int(char nCheckItem)
{
char2INT::iterator it = mchar2Int.find(nCheckItem);
if(it != mchar2Int.end())
{
int ret = it->second;
return it->second;
}
else
return -1;
}
char GetInt2Char(int nCheckItem)
{
INT2char::iterator it = mInt2Char.find(nCheckItem);
if(it != mInt2Char.end())
{
return it->second;
}
else
return -1;
}
//
实测一下:
int r=GetChar2Int(‘3’);
char rr1=GetInt2Char(48);
字符3对应的数字是51,数值48对应的字符是0.
在这里插入图片描述
通过这样的方式,我们就可以很轻松的获取字符的值,以及数值对应的字符,是不是非常的简单,容易.其实c++学习也是一个积累的 过程,一个不断成长的过程,之前写的网站居然打不开,现在有时间顺便在这里记录一下,以后也可以看看.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值