zoukankan      html  css  js  c++  java
  • STL-容器库101--array【C11】

    1. 原型

    C11提供

    template < class T, size_t N > class array;

    T: 元素类型,以 array::value_type 作为别名使用;
    N: array中元素大小;
    • 固定size的序列容器;
    • 初始化时, array对象不保存任何数据,除了编译时期的行为对“元素”参数的编译器初始化值
    • 和普通的数组一样,从[]访问
    • array仅仅为数组封装了一层成员函数和全局函数,以作为标准容器使用
    • array固定容器大小,不能扩展容量;
    • 0大小的array是有效的,但是不能访问数据。
    • STL  中的swap操作是非常低效率的操作;
    • array容器能够作为tuple对象(元组对象)使用。 头文件<array>中重载了get函数来获取array中的元素值。
    使用头文件:
      #include <array>

     1.1 成员类型:

    array中的成员类型作为一些参数、或者返回值类型的别名使用,下面的是别面以及定义:

    • value_type:模板参数T
    • reference: value_type&
    • const_reference: const value_type&;
    • pointer: value_type*
    • const_pointer: const value_type*;
    • iterator: 随机指向value_type的迭代器
    • const_iterator: 指向const value_type类型的迭代器
    • reverse_iterator: 
    • const_reverse_iterator:
    • size_type: size_t(无符号整数 unsign int
    • difference_type: ptrdiff_t(符号整形 int

    1.2 成员函数

    (1)Iterators

    Array::begin:

    Array::end:

    Array::rbegin:

    Array::rend;

    Array::cbegin

    Array::cend;

    Array::crbegin

    Array::crend;

    (2)Capacity

    Array:: size(): 元素数量

    Array::max_size():最大容量

    Array::expty(): 测试是否为空

    (3)Element access

    Array:: operator[]: 
    • 返回参数n位置的reference,注意,第一个元素位置为0
    • 与 成员函数at()具有相同的行为, 但是array::at()是会检查参数n是否越界,以及如果越界则抛出异常信号
    • 如果是const的array,则返回const_reference,否则返回reference
    • 注意:refenerence的样式是类型array内的别名定义。

    reference at ( size_type n );

    const_reference at ( size_type n ) const;

    • 返回参数n位置的reference。自定检测n是否位于有效的范围内。并抛出out_of_rance 异常。如果n 大于size或者等于size

    Array::front();

    • 返回第一个元素的reference
    • Calling this function on an empty container causes undefined behavior.

    Array::back();

    • 返回最后一个元素的reference, 不像array::end()返回的是iterator
    • Calling this function on an empty container causes undefined behavior.

    Array::data();

    • 返回pointer类型指向第一个元素;
    • 因为array类型是连续内存分配,因此可以对pointer进行任何偏置访问相应位置数据;

    (4)Modifiers

    void Array::fill(const value_type& val):
    • 对数组中的所有元素设置参数值
    void Array::swap(array& x):
    • 交换内容,两个对象具有相同的size;
    • 调用之后,两个对象互相交换内容;

     1.3 非成员函数重载

      get(array)

     返回array 中的第i个元素属性引用。

      relational operators(array)

    1.4 非成员 类的声明

    (1)tuple_element<array>

    (2)tuple_size<array>

  • 相关阅读:
    xml根据属性去重。如csprj去重
    table中td的内容换行。
    基于jq的表单填充
    c#包含类文件到csprj中
    t4 根据表名数组生成实体
    js中找string中重复项最多的字符个数
    一步步配置cordova android开发环境
    .net framework卸载工具
    Sql Server查询视图和表
    DbHelper.ttinclude 更新,查询视图和表
  • 原文地址:https://www.cnblogs.com/icmzn/p/8642704.html
Copyright © 2011-2022 走看看