• c++(27)STL:容器、算法、迭代器


    1、STL基本概念

    standard template library,标准模板库,是由惠普实验室开发的一系列软件的统称。STL广义上分为容器container、算法algorithm、迭代器iterator,容器和算法之间通过迭代器进行无缝连接。STL几乎所有的代码都采用了模板类或者模板函数,这相比传统的由函数和类组成的库来说提供了更好的代码重用机会。

    在c++标准中,STL被组织成一下13个头文件

    使用STL的优点

    (1)且现在STL是C++的一部分,被内建在c++编译器中,不需要额外安装。

    (2)特点:数据结构(容器)和算法分离。迭代器作为容器和算法的桥梁。

    (3)高重用性、高性能、高移植性、跨平台

    2、string容器

    在学习string容器之前,我们要先搞清楚string类型的特性。我们和char *字符串对比

    • char* 是一个指针,string是一个类。----string封装了char *,管理这个字符串,是一个char *型的容器
    • string封装了很多实用方法。----查找find,拷贝copy, 删除delete, 替换replace,插入insert
    • 不用考虑内存释放和越界。----string管理char*所分配的内存,每一次string的复制、取值都由string类负责维护
    • string和char*可以互相转换。----string str = "zhang3"; char* pch = str.c_str(); 

    (1)string的构造函数

     (2)string的赋值、取值操作

    ----  成员方法assign("zhang3");赋值操作

    ---- []中括号数组下标的方式,这种方式存在越界风险,可能让程序崩溃

    ---- at(i);这种方式则会在越界时抛出越界异常,

    (3)string拼接操作  +, +=

     (4)string查找和替换

     (5)string字符串比较

     (6)string字符串子串

     (7)string插入和删除

     string案例

    3、vector容器

    3.1vector单口容器:动态数组、可变数组

     vector提供两种迭代器,一种是正向迭代器begin和end,还有反向迭代器rbegin和rend。除了在尾部操作的pushback和popback之外,也提供插入方法insert。

    注意:我们一般不使用insert在中间插入数据,因为vector容器是一块连续的地址空间,如果在中间插入,那么插入地点后面的元素,都要向后移动,消耗资源。

    3.2vector动态增长原理

    当插入新元素的时候,如果空间不足,vector会申请更大的一块内存空间,将原来空间的数据拷贝到新空间,并释放原来的空间。再将新元素放入新申请的空间。vector的空间申请策略是会申请两倍空间大小,除非数据量占用空间特别大的时候,vector会改变申请空间策略。

    3.3vector API接口

     (1)构造函数

     (2)常用赋值操作

     

  • 相关阅读:
    「Vue3系列」Vue3简介及安装
    C语言-找鞍点
    Nginx反向代理
    逍遥自在学C语言 | 关系运算符
    判断字符串中是否包含中文
    开发中,遇到后端返回的数据列表不更新怎么办?
    Spring基础(四):XML方式实现DI
    redis中value/set
    docker install kafka
    基于velero及minio实现etcd数据备份与恢复
  • 原文地址:https://blog.csdn.net/tr_ainiyangyang/article/details/126020466