zoukankan      html  css  js  c++  java
  • 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 中的常用容器和常用算法。

  • 相关阅读:
    极简代码搞定视频剪辑
    python 遍历本地文件
    安装Anaconda需要知道的pc信息
    ng4 路由多参数传参以及接收
    Js之设置日期时间 判断日期是否在范围内
    VsCode显示左边折叠代码+-按钮
    H5+.Net Webapi集成微信分享前后端代码 微信JS-SDK wx.onMenuShareTimeline wx.onMenuShareAppMessage
    压测工具之JMeter之环境配置及运行
    C# 交集、差集、并集、去重
    Nginx初学者指南
  • 原文地址:https://www.cnblogs.com/shuiyj/p/13185137.html
Copyright © 2011-2022 走看看