STL简介

来源:互联网 发布:esp8266的单片机教程 编辑:程序博客网 时间:2024/05/22 00:35

STL

       STL(Standard Template Library)即标准模板库,它提供了模板化的通用类和和通用函数。STL的核心内容包括了容器(container)、迭代器(iterator)、算法(algorithm),此外,还包括空间配置器(allocator)、配接器(adapter)、仿函数(functor)等,共六个部分。它们常常会协同工作。STL提供了许多可以直接用于程序设计的数据结构和算法,这也为我们的编程节约了时间,提高了效率。

       1.容器(container)

          它是用来存储其他对象的对象,容器是容器类的实例,而容器类是用模板类来实现的适用于各种数据类型(可 以是自己定义的类型,也可以是预定义类型)。STL的容器类型包括顺序容器、关联容器和容器适配器。
        

          顺序容器(也叫序列容器)是将相同类型的对象的有限集按顺序组织在一起的容器,用来表示线性数据结构。其中包括vector、list和deque容器。

          关联容器是非线性容器,是用来根据键(key)进行快速储存、检索数据的内容。它主要包括map、multimap、set、multiset等容器。其中map和set只能存放唯一的key,multimap和multiset可以存放多个相同的key。
        

          容器适配器主要是指堆栈(stack)和队列(queue),除此之外还有priority_queue。栈就是符合“后进先出”(Last In First  Out,LIFO)规则的数据结构,队列就是符合“先进先出”(First In First Out,FIFO)原则的公平队列。它们可以对容器进行包装,使其表现出另一种行为,例如,stack<int,vector<int>>,它既实现了栈的功能,又能使其内部使用vector<int>来存储数据。但是容器适配器不支持迭代器。


        2.迭代器(iterator)

           它是一个对象,经常被用来遍历数组,它的操作类似于指针,但是它的功能更加强大,可以用于指示容器中的元素。迭代器提供了一些适用于多种容器的通用操作,这给我们带来了极大的方便。迭代器的基本操作包括:
           1).在容器中的特定位置定位迭代器,如begin和end操作;
            2).在迭代器指示位置检查是否存在对象,如find操作;
            3).获取储存在迭代器指示位置的对象值;
            4).改变迭代器指示位置的对象值,如果不是常量迭代器才可以改变值;
            5).在迭代器指示位置插入新对象;
            6).将迭代器移动到容器中的下一个位置。


        3.算法(algorithm)

            算法是用模板技术实现的适用于各种容器的通用程序。算法常常通过迭代器间接的操作容器中的元素,而且通常会返回迭代器作为算法运算的结果。STL大约提供了70个算法,每个算法都是一个模板函数或者一组模板函数,能够在许多类型的容器上进行操作。STL中的许多算法不仅适用于系统提供的容器类型,还适用于普通的C++数组或自定义的容器。我们常用的算法有如下几个:
            1).find和find_if,一般是用于查找元素,find_if可以加条件查找;
             2).merge,可以对两个容器进行合并,讲结果放在第三个容器中;
             3).sort,可以对指定容器区间内的元素进行排序,默认的排序方式是从小到大。
             4).count和count_if,一般用来统计,count_if可以加统计的条件;

0 0