• STL笔记


    STL的基本概念:

      1-容器:是可容纳各种类型的数据结构,是 类模板

      2-迭代器:是用于依次存放容器中的元素,类似指针

      3-算法: 是用于操作容器中元素的 函数模板

           sort() 用来对 vector 中的数据进行排序。

           find() 用来搜索 list 中的对象。

          算法本身与他们操作的数据类型无关,因此他们可以在从简单数组到高度复杂容器的任何数据结构上使用。

    如 int  a[100]:

      该数组就是容器,而int * 类型的指针变量就可以作为迭代器,sort算法可以作用在该容器上,对其排序:

      sort(a,a+50); //对前50个元素进行排序

    容器种类:

      顺序容器: vector(数组) ,deque (双向队列),list(双向链表) 

      关联容器:set ,multiset ,map ,multimap  // 都能对输入数据进行排序

      容器适配器: stack ,queue ,priority_queue

      PS:对象被插入容器中时,被插入的是对象的一个复制品

    容器 容器上的迭代器访问
    vector 随机访问(通过下标就能取到元素)
    deque 随机访问
    list 双向(不能用下标取元素)
    set/multiset 双向
    map/multimap 双向
       
    stack 不支持迭代器(元素只能在对头或对尾被访问)
    queue 不支持迭代器
    priority_queue 不支持迭代器

      如vector 的迭代器是随机迭代器,遍历vector可以有以下几种方法:

      

    vector<int> v(10);
    int i;
    for (int i = 0; i < v.size; ++i)
    {
        cout << v[i]; //根据下标随机访问
    }
    vector<int>::const_iterator it;
    for(it = v.begin(); it != v.end(); ++it)
        cout << *it;
    for(it = v.begin(); it < v.end(); ++it) 
        cout << *it;

      

     list的迭代器是双向迭代器,正确遍历方法为:

    list<int> v;
    list<int>::const_iterator it;
    for(it = v.begin(); it != end(); ++it)
        cout << *it;

    `  错误做法:

    for(it = v.begin(); it < v.end(); ++it)
            cout << *it;
        或
        for (int i = 0; i < v.size; ++i)
            cout << v[i];
        //双向迭代器不支持 <,list没有[]成员函数

      

  • 相关阅读:
    C# DataGridView的使用
    C# DataTable使用方法详解
    .NET 异步 Task的一些摘抄记录
    mybatis源码分析之调用过程
    Uipath学习(6):Uipath使用Outlook邮箱
    ABAP学习(33):Selection Screen的Search Help
    Uipath学习(5):Application及Browser,数据获取
    Web Dynpro for ABAP(1):Web Dynpro结构
    Uipath学习(4):Uipath操作excel
    Web Dynpro for ABAP(2):Basic & Dynamic Programmings
  • 原文地址:https://www.cnblogs.com/DSYR/p/9124924.html
Copyright © 2020-2023  润新知