zoukankan      html  css  js  c++  java
  • STL

        C++最重要的组成部分是他的标准模板库STL(Standard Template Library)。

        20世界90年代早期,惠普实验室的Alex Stepanov 和Meng Lio 使用包含了一些类和函数模板的库扩展了C++,这个库称为标准模板库STL,是标准C++库之一。 标准模板库STL关注的重点是“泛型数据结构”和“算法”,关键的组成部分是“容器(Container)”、“算法(Algorithms)”、“迭代器(Iterators)”。   

        容器是某种类型对象的集合。可以将容器理解为对常用“抽象数据类型”的分类。在STL中,将容器分为两大类型:序列式容器(Sequence Containers)和关联式容器(Associative)。常见比较典型的序列式容器有(1)向量vectgor(2)双端队列deque(3)表list;常见比较典型的关联式容器有(1)集合set(2)多重集合multiset(3)映射map(4)多重映射multimap。序列式容器和关联式容器的主要区别是数据在容器中的位置关系:序列式容器中数据的位置关系与数据插入容器的时间和顺序以及插入位置有关而与数据的值没有关系;关联式容器中的数据位置与数据的值有关,且存储在关联式容器中的数据通常来自有序集,这些数据通常可以根据某种排序准则来比较大小,数据在关联式容器中的位置关系也是按照数据的这种排序准则来确定的,与数据插入关联容器的时间和位置没有关系。关联式容器中的这种特点,在关联式容器中搜索一个元素的效率较高,通常需要时间复杂度为O(lgN)。
        除了序列式容器和关联式容器外,STL还有一类容器称为“适配器容器”,如栈stack、队列queue、和优先队列priority queue。这一类“适配器容器”实在原有容器的基础上适当裁剪得到的适合“特殊用途”的容器。   

        迭代器iterator,一种容器元素访问、找出后继、找出前驱的通用方法,即按照一定的顺序访问容器中的元素。使用迭代器iterator的最大的便利之处是可以为任意类型的容器提供一个很小的公共接口,每一个STL容器都提供了一组自己的迭代类型并且(至少)两种返回迭代器的方法(1)begin:返回一个定位在容器第一个元素的迭代器(2)end:返回一个定位在容器最后一个元素后面且紧挨着该元素的迭代器。对STL中的所有容器,迭代器接口与C++中的指针几乎一样,可以将迭代器看做指向容器中元素的指针,但是迭代器可以访问更复杂的元素,将迭代器称为“广义指针smart pointer”
        迭代器标示容器中的一个位置,声明:vector<int> :: iterator itor;
        *itor;    //返回迭代器所指位置处的元素
        itor++/itor--;    //返回当前迭代器所指位置的下一个位置/返回当前迭代器所致位置的上一个位置
        itor1 == itor2;
        itor1 != itor2;    //判断两个迭代器是否相等,即是否所指的是同一位置
        itor1 = tior2;    //将一个迭代器的值赋给另一个迭代器

        STL中的算法,指对容器中的元素进行常用的数据处理,STL中的算法是一种泛型算法,算法中使用迭代器来访问容器中的元素,并且对所有容器迭代器的接口完全相同同意容器。

  • 相关阅读:
    memcached客户端memadmin安装使用
    git之一: 在windows下安装git和使用总结
    nginx常用命令
    mysql授权 REVOKE 添加用户等
    mysql密码忘记解决
    个人常用alias
    解决zabbix图形界面中文乱码
    JsonPath的使用
    Httpclient 支持https(转)
    字符串拼接‘+’实现
  • 原文地址:https://www.cnblogs.com/icmzn/p/4684388.html
Copyright © 2011-2022 走看看