STL之map

关于map的简单应用需要注意一下几个方面:
1、包含头文件:#include <map>
2、声明形式:
map<type1,type2> m;其中type可以是任何数据类型,包括自己写的结构体、类等等,当然也可以是string 类。
3、数据的插入:
1)用insert插入pair型数据:m.insert(pair<type1,type2>(element1,element2));
2)用insert插入value_type型数据:m.insert(map<type1,type2>::value_type(element1,element2));
3)直接采用数组形式插入数据:m[element1]=element2;
对以上三例均举例说明:
map<string,string> m;
string a="hehe";
string b="haha";
m.insert(pair<string,string>(a,b));//方法1
m.insert(map<string,string>::value_type(a,b));//方法2
m[a]=b;//方法3
上面方法虽然都可以插入数据,但是是有区别的:
第一种和第二种方法用insert()插入等效。但是insert()和数组方式插入元素的方法不同:insert()插 入元素遵循集合元素的唯一性,如果map集合中本来就有关键字为element1的元素,则再次insert的话是 插不进去的,但是用数组方式可以覆盖原来的element2。这点要谨记!~
4、可用size()函数查看当前m内元素的多少。
5、m内元素的遍历:
1)可以用前向迭代器
2)可以用反向迭代器
3)可以用数组遍历(但是这种情况下好像只有关键字是整数类型的才可以,而且如果关键字不连续,输 出的结果可能会有空行)。
以下示例:
map<string,string> m;
map<string,string>::iterator it;
map<string,string>::reverse_iterator itr;
string a="hehe";
string b="haha";
m.insert(pair<string,string>(a,b));
m.insert(pair<string,string>(b,a));

for(it=m.begin();it!=m.end();++it)
{
printf("%s %s/n",(it->first).c_str(),(it->second).c_str());
}

for(itr=m.rbegin();itr!=m.rend();++itr)
{
printf("%s %s/n",(itr->first).c_str(),(itr->second).c_str());
}

输出遍历输出的形式就略过不写了,有兴趣可以自己写一下。
6、m内元素的查找:
这里只打算讲一种方法:利用find()函数,如果查找成功,返回查找到的元素的地址,否则返回 m.end();
m的初始化如上,itr(我习惯将前向迭代器命名为itr)为前向迭代器。
itr=m.find(a);
if(itr!=m.end())
{
printf("%s/n",(itr->second).c_str());//输出结果为haha
}
else
{
……
}
7、m的判空可以用empty()函数
8、m的清空可以用clear()函数
9、删除某个元素:
用erase()函数:它有三个重载了的函数:
1)itr=m.find(a);
m.erase(itr);
2)int n=m.erase(a);
3)m.erase(m.begin(),m.end());//把整个m内的元素全部删除
10、排序
关于内部元素排序机制,默认的是按照关键字从小到大排,如果要按照其他方式排序则需要重载<操作 符,再次不细说,可上网查阅。
另外,map的空间消耗比较大,因为它在不存储你的数据时每个节点也是要占用16个字节的,一个父节点指针,左右孩子指针,一个枚举值(表示红黑的,相当于平衡二叉树中的平衡因子),因此占用内存比较大。

内容概要:本文详细介绍了OCR(光学字符识别)技术,从定义出发,阐述了它是如何让计算机“看懂”图片里的文字,通过扫描仪等设备读取文本图像并转换成计算机可编辑的文本。文中列举了OCR在办公、图书馆、交通、金融等领域的广泛应用实例,如快速处理纸质文件、车牌识别、银行支票处理等。接着回顾了OCR的发展历程,从20世纪初的萌芽到如今基于深度学习的智能化时代,期间经历了从简单字符识别到复杂场景下的高精度识别的演变。技术层面,深入解析了OCR的关键技术环节,包括图像预处理、文本检测、文本识别和后处理,每个环节都采用了先进的算法和技术手段以确保识别的准确性。最后探讨了OCR在未来可能面临的挑战,如复杂场景下的识别准确率、特殊字体和语言的支持以及数据安全问题,并展望了其与人工智能融合后的广阔前景。 适合人群:对OCR技术感兴趣的技术爱好者、开发者以及希望了解该技术在各行业应用的专业人士。 使用场景及目标:①帮助用户理解OCR技术的基本原理和发展历程;②展示OCR在多个行业中的具体应用场景,如办公自动化、金融票据处理、医疗病历管理等;③探讨OCR技术面临的挑战及未来发展方向,为相关从业者提供参考。 其他说明:本文不仅涵盖了OCR技术的基础知识,还深入探讨了其背后的技术细节和发展趋势,对于想要深入了解OCR技术及其应用的人来说是非常有价值的参考资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值