标准模板库,是一组模板类和函数,向程序员提供了 :
存储信息的容器访问存储信息的迭代器 操作容器内容的算法简单的来说,就是分为三部分,算法,迭代器,容器,其中迭代器是算法和容器之间的桥梁,可以让程序员可以通过算法对容器进行操作,而且这些算法也不是容器相关的,比如说reverse算法,对于多个容器都可以使用。本篇主要简单的介绍一下标准模板库(不包括C++11标准),如果想要系统的学习,还是需要去看相关书籍。
容器是用于存储数据的STL类,容器大概分为2种:
顺序容器关联容器顺序容器:指的是容器内的数据是按照顺序存储的。顺序容器的插入速度较快,但是查找速度较慢。 顺序容器有:vector,deque,list
关联容器:指的是容器内的数据是按照键值对来存储的,或者说是指定的顺序来存储的,就像字典一样,关联容器的特点是,插入速度慢,但是读取速度快。 关联容器有:set,map,multiset,multimap
有些STL实现也支持hash_set,hash_multiset,hash_map,hash_multimap。这些容器有更好的搜索性能,搜索所需要的时间和容器的大小无关。但是,这些容器并不是遵循标准的容器,如果想要应用程序在不同的平台之间能够移植,还是需要遵循标准的容器。
string虽然操作和容器十分相似,但是由于string不能存取任意的数据类型,所以严格来说,还不能被称为容器。
Detail: map容器是存储键值对的,只能按照键来排序,如果想要值来排序的话,有几种解决方案,1,新建一个map容器,將原来map里的键值对调换顺序存储到新的map容器中,当然,要保证逆序后的map键值都是唯一的,否则可以使用multimap。 2,新建一个set或者vector容器,把map里的每个键值对保存到新的set和vector里,然后自定义排序的函数对象进行排序。
最简单的迭代器是指针,给定一个指向数组第一个元素的指针,可以递增该指针依次访问数组元素,当然,也可以操作指针所指向的元素。