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()

    返回容器的内存模型

  • 相关阅读:
    DOM增删改替换
    DRF框架之序列化器serializers组件详解
    DRF基础操作流程
    DRF框架基础知识储备
    selectors模块
    并发编程——IO模型详解
    高性能web服务器——nginx
    Django中的ORM如何通过数据库中的表格信息自动化生成Model 模型类?
    使用cors完成跨域请求处理
    Flask基础
  • 原文地址:https://www.cnblogs.com/ChinaHook/p/6985228.html
Copyright © 2011-2022 走看看