zoukankan      html  css  js  c++  java
  • 【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()

    返回容器的内存模型

  • 相关阅读:
    SpringMVC 拦截器不拦截静态资源的三种处理方式
    Tomcat启动失败问题 (指定的主资源集 [D:javaapache-tomcat-9.0.35webappsAppManageSystem] 无效)
    oracle转postgresql FOR UPDATE WAIT 5 处理
    jq插件验证
    HTML5数据储存
    canvas 一些 用法大全
    HTML canvas 绘图
    CSS3
    HTML 核心内容
    HTML5 媒体
  • 原文地址:https://www.cnblogs.com/ChinaHook/p/6985228.html
Copyright © 2011-2022 走看看