zoukankan      html  css  js  c++  java
  • STL容器基本功能与分类

    STL有7中容器

    分别为:

      vector  向量    <vector>(头文件)  随机访问容器、顺序容器

      deque  双端队列  <deque>       随机访问容器、顺序容器

      list     列表    <list>          可逆容器、顺序容器

      set     集合    <set>         可逆容器、关联容器

      multiset 多重集合   <set>           可逆容器、关联容器

      map   映射     <map>         可逆容器、关联容器

      multimap 多重映射       <map>         可逆容器、关联容器

    设S表示一种容器类型(如:vector<int>),s1、s2都是S类型的实例,容器都具有如下基本功能

      S s1  容器的默认构造函数,用于构造一个没有任何元素的空容器。

      s1 op s2  对两容器之间的元素按字典序进行比较,op表示==、!=、<、<=、>、>=任何一个。

      s1.begin()  返回指向s1第一个元素的迭代器

      s1.end()  返回指向s1最后一个元素的下一个位置的迭代器

      s1.empty()  表示s1容器是否为空,返回一个布尔值。

      s1.size()  返回s1容器中元素的个数。

      s1.swap(s2)  将s1容器和s2容器的内容交换。

    与类型为S的容器相关联的迭代器的类型

    S::iterator  (与S相关的普通迭代器类型,迭代器指向的元素类型为T)

    S::const_iterator  (表示与S相关的常迭代器类型,迭代器指向的元素类型为const T,通过这样的迭代器只能读取元素,不能改写元素

    按照容器中元素的组织方式,容器可分为: “顺序容器”(相同类型元素以严格线性形式组织)  和  “关联容器”(可根据一组索引快速提取元素)。

    按照与容器所关联的迭代器类型,又有“可逆容器”这一概念。可逆容器又有“随机访问容器”的子概念。

    每一个可逆容器都有逆向迭代器

    s1.rbegin()  返回指向容器最后一个元素的逆向迭代器

    s1.rend()  返回容器的第一个元素的前一个位置的逆向迭代器

    逆向迭代器的类型:S::reverse_iterator  和 S::const_reverse_iterator

    逆向迭代器的“++”运算 被映射为普通迭代器的“--”,“--”运算 被映射为普通迭代器的“++”

    一个迭代器和它的逆向迭代器可以相互转换

    逆向迭代器类型都有一个构造函数,用来构造一个迭代器的逆向迭代器:

      如p1是S::iterator迭代器,那么S::reverse_iterator(p1)将得到p1的逆向迭代器

    逆向迭代器有一个成员函数base,用来得到构造了此逆向迭代器的那个迭代器。

      如r1是通过S::reverse_iterator(p1)构造的迭代器,那么,r1.base()==p1.

    r1.begin()、r1.end()、r1.rbegin()、r1.rend()之间的关系:

      s1.rbegin()==S::reverse_iterator(s1.end()),    s1.rbegin().base()==s1.end();

      s1.rend()==S::reverse_iterator(s1.begin()),    s1.rend().base==s1.begin()

    随机访问容器提供的迭代器是“随机访问迭代器”,它可以直接通过一个整数来访问容器中的指定元素。

  • 相关阅读:
    Mysql优化之Explain查询计划查看
    map转listmap
    代码大全
    cas
    日志
    xml模板
    springboot
    日志
    spring应用
    拆分表中sheet
  • 原文地址:https://www.cnblogs.com/Carrie-0173/p/6403093.html
Copyright © 2011-2022 走看看