遍历容器的方法及装置制造方法及图纸

技术编号:21140407 阅读:23 留言:0更新日期:2019-05-18 04:58
本发明专利技术实施例提供一种遍历容器的方法及装置,该方法包括:对待遍历的嵌套容器进行解嵌套,得到多个容器的类型;其中,嵌套容器是根据多个容器嵌套得到的容器。根据每个容器的类型对应的遍历模板,遍历嵌套容器的内容;其中,遍历模板为用于遍历对应类型的容器的内容的代码。本实施例可以减少代码编写工作量,并能够提升容器遍历的灵活性。

【技术实现步骤摘要】
遍历容器的方法及装置
本专利技术实施例涉及计算机技术,尤其涉及一种遍历容器的方法及装置。
技术介绍
容器是C++中一种常用的工具,在对包含有容器的程序进行操作的过程中,常常需要对容器中的内容进行遍历从而实现对应的操作。现有技术在遍历容器内容时,通常需要首先确定容器的类型以及容器中包含的子元素的类型,其次根据容器的类型以及容器中包含的子元素的类型编写相应的代码,针对嵌套类型的容器,需要使用多层循环实现对容器的遍历。然而,对于不同嵌套类型的容器,必须编写不同的代码才能实现遍历,不仅代码编写工作量大,容器的遍历还缺乏灵活性。
技术实现思路
本专利技术实施例提供一种遍历容器的方法及装置,以减少代码编写工作量,并提高容器遍历的灵活性。第一方面,本专利技术实施例提供一种遍历容器的方法,包括:对待遍历的嵌套容器进行解嵌套,得到多个容器的类型;其中,所述嵌套容器是根据所述多个容器嵌套得到的容器;根据每个容器的类型对应的遍历模板,遍历所述嵌套容器的内容;其中,所述遍历模板为用于遍历对应类型的容器的内容的代码。在一种可能的设计中,所述对待遍历的嵌套容器进行解嵌套,得到多个容器的类型,包括:获取待遍历的嵌套容器的最外层容器的类型;根据所述最外层容器的类型对应的第一遍历模板,获取所述最外层容器内的第一子元素;根据所述第一子元素判断是否存在第二容器,若是,则获取所述第二容器的类型以及所述第二容器的类型对应的第二遍历模板;根据所述第二遍历模板,获取第二容器内的第二子元素,重复执行根据子元素判断是否存在容器的步骤,直至根据子元素判断不存在容器为止。在一种可能的设计中,所述根据子元素判断是否存在容器,包括:根据子元素判断所述遍历模板中是否存在模板类函数;若是,则调用所述模板类函数以从所述嵌套容器的嵌套类型中获取所述第二容器的类型,并获取所述第二容器的类型对应的第二遍历模板。在一种可能的设计中,若所述遍历模板中不存在模板类函数,所述方法还包括:根据所述子元素中存在的基本数据类型,遍历最内层的容器的内容,其中所述基本数据类型包括整型、浮点型、字符串型中的至少一种。在一种可能的设计中,所述获取待遍历的嵌套容器的最外层容器的类型,包括:获取所述待遍历的嵌套容器的接口函数,所述接口函数包括类型参数;根据所述接口函数中的类型参数,获取所述最外层容器的类型。在一种可能的设计中,不同的嵌套容器的接口函数相同。在一种可能的设计中,各所述容器为基于C++语言实现的容器。第二方面,本专利技术实施例提供一种遍历容器的装置,包括:解嵌套模块,用于对待遍历的嵌套容器进行解嵌套,得到多个容器的类型;其中,所述嵌套容器是根据所述多个容器嵌套得到的容器;遍历模块,用于根据每个容器的类型对应的遍历模板,遍历所述嵌套容器的内容;其中,所述遍历模板为用于遍历对应类型的容器的内容的代码。在一种可能的设计中,所述解嵌套模块具体用于:获取待遍历的嵌套容器的最外层容器的类型;根据所述最外层容器的类型对应的第一遍历模板,获取所述最外层容器内的第一子元素;根据所述第一子元素判断是否存在第二容器,若是,则获取所述第二容器的类型以及所述第二容器的类型对应的第二遍历模板;根据所述第二遍历模板,获取第二容器内的第二子元素,重复执行根据子元素判断是否存在容器的步骤,直至根据子元素判断不存在容器为止。在一种可能的设计中,所述解嵌套模块具体用于:根据子元素判断所述遍历模板中是否存在模板类函数;若是,则调用所述模板类函数以从所述嵌套容器的嵌套类型中获取所述第二容器的类型,并获取所述第二容器的类型对应的第二遍历模板。在一种可能的设计中,若所述遍历模板中不存在模板类函数,所述遍历模块还用于:根据所述子元素中存在的基本数据类型,遍历最内层的容器的内容,其中所述基本数据类型包括整型、浮点型、字符串型中的至少一种。在一种可能的设计中,所述解嵌套模块具体用于:获取所述待遍历的嵌套容器的接口函数,所述接口函数包括类型参数;根据所述接口函数中的类型参数,获取所述最外层容器的类型。在一种可能的设计中,不同的嵌套容器的接口函数相同。在一种可能的设计中,各所述容器为基于C++语言实现的容器。第三方面,本专利技术实施例提供一种遍历容器的设备,包括:存储器,用于存储程序;处理器,用于执行所述存储器存储的所述程序,当所述程序被执行时,所述处理器用于执行如上第一方面以及第一方面各种可能的设计中任一所述的方法。第四方面,本专利技术实施例提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如上第一方面以及第一方面各种可能的设计中任一所述的方法。本专利技术实施例提供一种遍历容器的方法及装置,该方法通过对待遍历的嵌套容器进行解嵌套,得到多个容器的类型;其中,嵌套容器是根据多个容器嵌套得到的容器。根据每个容器的类型对应的遍历模板,遍历嵌套容器的内容;其中,遍历模板为用于遍历对应类型的容器的内容的代码,由此不需要编写嵌套容器的代码,只需要编写各个类型的容器对应的通用的遍历模板即可,同一遍历模板可以应用于不同的嵌套容器,从而减少了代码编写的工作量,在改变嵌套容器的结构的情况下,不需要重新编写代码,根据嵌套容器解嵌套出的多个容器的类型各自对应的遍历模板即可实现对嵌套容器的内容的遍历,提升了容器遍历的灵活性。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例提供的遍历容器的方法的流程图一;图2为本专利技术实施例提供的遍历容器的方法的流程图二;图3为本专利技术实施例提供的遍历容器的装置的结构示意图;图4为本专利技术实施例提供的遍历容器的设备的硬件结构示意图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。图1为本专利技术实施例提供的遍历容器的方法的流程图一。如图1所示,该方法包括:S101、对待遍历的嵌套容器进行解嵌套,得到多个容器的类型;其中,嵌套容器是根据多个容器嵌套得到的容器。在本实施例中,多个容器嵌套组成嵌套容器,其中多个容器可以对应各自的类型,多个容器的类型例如可以为vector,还例如可以为list等,本专利技术实施例对多个容器的类型不做特别限制,本领域技术人员可以理解,多个容器的类型可以根据需要设定为标准库容器的容器类型中的任意类型。其中,嵌套容器是根据多个容器嵌套得到的容器,本专利技术实施例对具体的嵌套方式不做限制,本领域技术人员可以理解,其中嵌套容器可以为标准库容器中多个容器的任意嵌套组合。进一步地,本实施例通过对嵌套容器中的内容进行遍历从而进行对应的容器操作,具体的,对待遍历的嵌套容器进行解嵌套得到多个容器的类型,其具体实现方式例如可以为首先获取嵌套容器的最外层容器的类型,根据最外层容器的类型得到第二层嵌套的容器,其次根据第二层嵌套的容器获取第二层容器的类型本文档来自技高网...

【技术保护点】
1.一种遍历容器的方法,其特征在于,包括:对待遍历的嵌套容器进行解嵌套,得到多个容器的类型;其中,所述嵌套容器是根据所述多个容器嵌套得到的容器;根据每个容器的类型对应的遍历模板,遍历所述嵌套容器的内容;其中,所述遍历模板为用于遍历对应类型的容器的内容的代码。

【技术特征摘要】
1.一种遍历容器的方法,其特征在于,包括:对待遍历的嵌套容器进行解嵌套,得到多个容器的类型;其中,所述嵌套容器是根据所述多个容器嵌套得到的容器;根据每个容器的类型对应的遍历模板,遍历所述嵌套容器的内容;其中,所述遍历模板为用于遍历对应类型的容器的内容的代码。2.根据权利要求1所述的方法,其特征在于,所述对待遍历的嵌套容器进行解嵌套,得到多个容器的类型,包括:获取待遍历的嵌套容器的最外层容器的类型;根据所述最外层容器的类型对应的第一遍历模板,获取所述最外层容器内的第一子元素;根据所述第一子元素判断是否存在第二容器,若是,则获取所述第二容器的类型以及所述第二容器的类型对应的第二遍历模板;根据所述第二遍历模板,获取第二容器内的第二子元素,重复执行根据子元素判断是否存在容器的步骤,直至根据子元素判断不存在容器为止。3.根据权利要求2所述的方法,其特征在于,所述根据子元素判断是否存在容器,包括:根据子元素判断所述遍历模板中是否存在模板类函数;若是,则调用所述模板类函数以从所述嵌套容器的嵌套类型中获取所述第二容器的类型,并获取所述第二容器的类型对应的第二遍历模板。4.根据权利要求3所述的方法,其特征在于,若所述遍历模板中不存在模板类函数,所述方法还包括:根据所述子元素中存在的基本数据类型,遍历最内层的容器的内容,其中所述基本数据类型包括整型、浮点型、字符串型中的至少一种。5.根据权利要求2所述的方法,其特征在于,所述获取待遍历的嵌套容器的最外层容器的类型,包括:获取所述待遍历的嵌套容器的接口函数,所述接口函数包括类型参数;根据所述接口函数中的类型参数,获取所述最外层容器的类型。6.根据权利要求5所述的方法,其特征在于,不同的嵌套容器的接口函数相同。7.根据权利要求1至6任一项所述的方法,其特征在于,各所述容器为基于C++语言实现的容器。8.一种遍历容器的装置,其特征在于,包括:解嵌套模块,用于对待遍历的嵌套容器进行解嵌套,得到多个容器的类型;其中,所述嵌套容器是根据所述多...

【专利技术属性】
技术研发人员:郭昂
申请(专利权)人:网易杭州网络有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1