• STL-STL基础概念


    STL(Standard Template Library,标准模板库),是惠普实验室开发的一系列软件的统 称。现在主要出现在 c++ 中,但是在引入 c++ 之前该技术已经存在很长时间了。

    STL 从广义上分为: 容器(container) 算法(algorithm) 迭代器(iterator),容器和算法之 间通过迭代器进行无缝连接。STL 几乎所有的代码都采用了模板类或者模板函数,这相比传 统的由函数和类组成的库来说提供了更好的代码重用机会。

    STL(Standard Template Library)标准模板库,在我们 c++ 标准程序库中隶属于 STL 的 占到了 80%以上。

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

    1
    
    <algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、 <memory>、<numeric>、<queue>、<set>、<stack> 、<utility>
    
    • 容器
      • 容器即数据结构,比如说 vector 是动态数组,stack 是栈。
      • 容器可以嵌套容器
      • 容器可以分为序列化容器和关联式容器。序列化容器即按照元素进入容器的先后顺序来排列;关联式容器即按照容器定义的其他规则来存放元素。
    • 迭代器:迭代器是为了遍历容器中的元素,可以理解是指针
    • 算法:STL 为我们提供的算法,算法即用有限的步骤解决问题
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    
    #include <iostream>
    #include <vector>
    #include <algorithm>
    
    //----------------------------------
    // stl 包括三部分:容器、迭代器、算法
    //----------------------------------
    
    using namespace std;
    
    int main()
    {
        vector<int> v; // 容器,stl 的标准容器之一,动态数组
        v.push_back(1); // Vector 容器提供的插入数据的方法
        v.push_back(3);
        v.push_back(6);
        v.push_back(4);
        v.push_back(3);
    
        vector<int>::iterator pBegin = v.begin(); // 迭代器,获取指向第一个元素的指针
        vector<int>::iterator pEnd = v.end(); // 迭代器,获取指向最后一个元素的指针
    
        int n = count(pBegin, pEnd, 3); // 算法,统计 3 出现的次数
        cout << "n = " << n << endl;
    
        // 使用迭代器遍历 vector
        while(pBegin != pEnd)
        {
            cout << *pBegin << endl;
            pBegin++;
        }
    
        return 0;
    }
    

    接下来一系列的文章将介绍 STL 中的常用容器和常用算法。

  • 相关阅读:
    eslient配置
    webpack实战——手写常用plugin
    自己实现一个大文件切片上传+断点续传
    小程序长列表优化实践
    GitKraken 正體中文
    ruby Sequel 连接 PostgreSQL
    安装 Window Terminal 并连接wsl的Ubuntu系统
    ruby sinatra+puma+Nginx by Ubuntu
    ruby symbol 用法(:变量)
    win10配置子系统Ubuntu子系统(无需通过Windows应用市场)
  • 原文地址:https://www.cnblogs.com/shuiyj/p/13185137.html
Copyright © 2020-2023  润新知