• 【C++ STL】容器概要


    1、容器的共通能力

      1、  所有的容器都是“value”语意,而不是“reference”语意。容器进行元素的安插操作时,内部实施的都是拷贝操作,置于容器内。因此STL容器的每个元素都必须能被拷贝。如果你打算存放的对象不具有public copy构造函数,或者你要的不是副本(例如你要的是被多个容器共同容纳的元素),那么元素就只能是指针(指针对象)。

      2、  所有元素都形成一个次序。每个容器都可以依相同次序一次或多次遍历每个元素。每个容器都提供返回“迭代器”的函数,运用这些迭代器可以访问所有元素。

      3、  各项操作非绝对安全。调用者必须保证传给操作函数的参数符合要求。违反这些要求(例如非法索引)会导致未定义的行为,并且STL不会抛出异常,从而导致程序数据错误或者崩溃等问题。

    2、容器的共同操作

      每个容器都有个default构造函数,一个copy函数和一个析构函数。

    操作

    效果

    ContType c

    产生一个未含任何元素的空容器

    ContType c1(c2)

    产生一个同型容器

    ContType c(begin,end)

    复制[begin,end]区间的元素,作为初值

    c.size()

    返回容器中的元素数量

    c.empty()

    判断容器是否为空,相当于(0==size()),可能更快

    c.max_size()

    返回元素的最大可能数量

    c1 == c2

    判断c1是否等于c2

    c1 != c2

    判断c1是否不等于c2,相当于!(c1==c2)

    c1 < c2

    判断是否c1小于c2

    c1 > c2

    判断c1是否大于c2

    c1 >= c2

    判断是否c1大于等于c2,相当于!(c1<c2)

    c1 <= c2

    判断是否c1小于等于c2,相当于!(c1>c2)

    c1 = c2

    将c2所有的元素赋值给c1

    c1.swap(c2)

    交换c1和c2的数据

    swap(c1,c2)

    交换c1和c2的数据,全局函数

    c.begin()

    返回一个迭代器,指向c的第一个元素

    c.end()

    返回一个迭代器,指向c的最后一个元素的下一个位置

    c.rbegin()

    返回一个逆向迭代器,指向逆向遍历的第一个元素

    c.rend()

    返回一个逆向迭代器,指向逆向遍历的最后一个元素的下一个位置

    c.insert(pos,elem)

    将elem的一份副本安插于pos处

    c.erase(beg,end)

    移除[beg,end]区间的所有元素

    c.clear()

    移除所有元素,令容器为空

    c.get_allocator()

    返回容器的内存模型

  • 相关阅读:
    3n+1问题
    判断x的m次方和y的m次方末尾三位数是否相等
    OpenJudge 计算概论1007:点评赛车
    整数划分问题【转】
    证明:平面内有5个整点,必有两个点连线的中点为整点【本资源整理自网络】
    欧几里德算法的证明
    导出本地和远程SVN项目, Export remote SVN repository
    Centos7的firewalld配置
    ESXi5.5下的Centos7虚机配置静态IP
    Dubbo消费端错误: ClassNotFoundException: org.apache.zookeeper.proto.WatcherEvent
  • 原文地址:https://www.cnblogs.com/ChinaHook/p/6985228.html
Copyright © 2020-2023  润新知