• STL中的容器


    一、什么是STL
    STL是standart template library,标准模板库
    是HP实验室开发的一系列软件的统称,从根本上说,它是一些容器和算法的集合,它是世界上很多最聪明的程序员多年的杰作
    STL是标准化的组件,不用重新开发,可以直接使用,它是C++的一部分,不需要额外安装

    二、STL中有什么
    1、容器
    存储类对象的盒子
    线性容器:vector、list
    容器适配器:queue、stack、double queue
    关系型容器:set、map
    2、算法
    #include<algorithm>
    find sort
    3、迭代器
    迭代器是一个类,它实现于容器模板中
    它的对象是一个指向容器中的一个元素,它实现了*运算符,给人的感觉它好像是个指针
    从容器中获取到迭代器是一个半开半闭区间,[start,end)

    三、vector容器
    1、特点:
    a、占用的是连续的内存
    b、动态的管理内存
    c、支持随机访问(at,[])
    d、支持按迭代器进行插入和删除(insert,erase)
    但只有在末尾添加和删除时效率才最高
    e、支持随机迭代:it=it+4;

    2、定义:
    vector<类型> a;//创建容器
    vector<类型> a(10);//创建容器并设置容量为10,并把元素初始化为0
    vector<类型> a(10,1);//创建容器并设置容量为10,并设置初始值

    3、返回值
    v[i]、v.at(i) v.front()、v.back() 这种方式返回的是元素的引用

    4、成员函数
    assign
    size_type capacity();//获取容器在扩充之后的容量

    iterator erase()
    //元素被删除或插入后,之前获取的迭代器就失效了,需要重新获取

    void resize()
    //改变容器的大小,可以调大(构造),也可以调小(析构)

    5、支持的运算符
    ==、!=、>=、<=、>、<
    比较两个容器中元素的数量,顺序,值是否相等
    容器中存放的对象的运算符==运算符必须要重载

    6、排序、查找
    在vector容器中是没有排序和查找的成员函数的
    在List容器中由于这是链式的存储结构所以不能使用全局的sort函数,必须自己实现
    在使用sort排序时,待排序的对象必须实现出<的重载(或者给sort提供比较函数)

    7、自定义类使用容器时需要实现的成员有
    无参构造、拷贝构造
    == <

    四、set容器
    集合容器,里面的元素不会重复,它会自动排重。
    使用时要实现它的==运算符。

    multiset 允许有重复的数据。

    pair equal_range( const key_type &key );
    查找值等于key的元素信息,返回两人个迭代器。

    iterator lower_bound( const key_type &key );
    查找大于等于key的第一个元素

    iterator upper_bound( const key_type &key );
    查找大于key的第一个元素

    五、队列
    单向队列:
    back、empty、front、pop、push、size
    双向队列:

    六、List
    是一种链式存储结构,不能使用算法库中的排序,只能调用自带的排序函数。

    void unique();
    void unique( BinPred pr );
    删除重复的元素。

    void splice( iterator pos, list &lst );
    void splice( iterator pos, list &lst, iterator del );
    void splice( iterator pos, list &lst, iterator start, iterator end );
    从指定的位置开始合并两个链表

    void merge( list &lst );
    void merge( list &lst, Comp compfunction );
    直接合并两人个链表

    七、map是一种关联式的容器
    它底层以采用的是红黑树(有序+平衡)进行存储的。
    一个键值(主键)只能对应一个值。

    multimap 多重映射
    键值可以重复

    八、priority_queue优先队列
    元素在入队后就已经排序好了,最大值在上面。
    对元素排序依靠的是 < 运算符。








  • 相关阅读:
    007 Android 单击事件、toast使用
    AdminService数据访问层
    DBHelper
    兄弟2820技术
    左右两侧采用绝对定位 中间同样采用margin-left margin-right方法:
    三层架构保存,更新,查询等一些列方法
    DropDownList的使用
    兄弟2820
    三层架构
    treevew
  • 原文地址:https://www.cnblogs.com/xiwen2017/p/9551225.html
Copyright © 2020-2023  润新知