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>

STL-容器库101--array【C11】的更多相关文章

  1. STL标准库-容器-deque

    技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性. deque双向开口可进可出的容器 我们知道连续内存的容器不能随意扩充,因为这样容易扩充别人那去 deque却可以,它创造了内存 ...

  2. STL标准库-容器-vector

    技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性. 向量容器vector是一个动态数组,内存连续,它是动态分配内存,且每次扩张的原来的二倍. 他的结构如下 一 定义 vector ...

  3. STL标准库-容器-set与multiset

    技术在于交流.沟通,转载请注明出处并保持作品的完整性. set与multiset关联容器 结构如下 set是一种关联容器,key即value,value即key.它是自动排序,排序特点依据key se ...

  4. STL标准库-容器-set与map

    STL标准库-容器-set与multiset C++的set https://www.cnblogs.com/LearningTheLoad/p/7456024.html STL标准库-容器-map和 ...

  5. C++ 泛型程序设计与STL模板库(1)---泛型程序设计简介及STL简介与结构

    泛型程序设计的基本概念 编写不依赖于具体数据类型的程序 将算法从特定的数据结构中抽象出来,成为通用的 C++的模板为泛型程序设计奠定了关键的基础 术语:概念 用来界定具备一定功能的数据类型.例如: 将 ...

  6. STL容器底层数据结构的实现

    C++ STL 的实现: 1.vector      底层数据结构为数组 ,支持快速随机访问   2.list            底层数据结构为双向链表,支持快速增删   3.deque     ...

  7. STL标准库-算法-常用算法

    技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 介绍11种STL标准库的算法,从这11种算法中总结一下算法的基本使用 1.accumulate() 累加 2.for_each( ...

  8. STL 容器的概念

    STL 容器的概念 在实际的开发过程中,数据结构本身的重要性不会逊于操作于数据结构的算法的重要性,当程序中存在着对时间要求很高的部分时,数据结构的选择就显得更加重要. 经典的数据结构数量有限,但是我们 ...

  9. [转]STL 容器一些底层机制

    1.vector 容器 vector 的数据安排以及操作方式,与 array 非常相似.两者的唯一区别在于空间的运用的灵活性.array 是静态空间,一旦配置了就不能改变,vector 是动态数组.在 ...

  10. STL容器概述

    STL容器 1.容器概述 1.1.容器分类 1.1.1.顺序容器:提供对元素序列的访问,顺序容器为元素连续分配内存或将元素组织为链表,元素的类型是容器成员value_type. 顺序容器 说明 vec ...

随机推荐

  1. c# 把对象加入队列,对象为全局变量,对象改变队列值也跟着改变

    若程序把对象加入队列,对象为全局变量,对象改变队列值也跟着改变,如下: filecontent  为两个字段的属性值. class FileContent { // public string Htt ...

  2. C# fckeditor浏览服务器和上传目录不一致,看不到上传过的文件

    fckeditor在上传标签页面,传过文件后,在浏览服务器那里,看不到之前上传的文件,通过浏览服务器页面上传文件,保存的目录也和上传标签页面上传的不是同一个文件夹. 修改方法如下: 打开fckedit ...

  3. 探索未知种族之osg类生物---起源

    任何程序都是有生命的,是生命就需要呼吸.例如普通的windows程序,当运行完main()函数后,就需要进入消息循环,来监听用户的各种操作,以便做出及时的回应.这样的每次循环就像生命的每次呼吸,来维持 ...

  4. CODE[VS]4228 小猫爬山 小猫爬山

    原题链接 第一眼还以为是贪心,然后随便找了几组例子瞬间推翻贪心的想法.发现\(n\leqslant18\),显然是用爆搜+剪枝. 爆搜主体我是对小猫进行枚举,判断增添缆车,其实这是一个比较慢的搜法,而 ...

  5. php7.0-fpm.sock

    .sock  这种方式是套接字的方式连接的

  6. Spring Environment(二)源码分析

    Spring Environment(二)源码分析 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Spring Envi ...

  7. robotframework 常用关键字

    标准库 第三方库 其他库

  8. openssl pem文件的读取

    准备工作 生成私钥文件(里面已包含公钥) openssl genrsa -out private.pem 1024 从私钥文件中提取公钥 openssl rsa -in private.pem -pu ...

  9. EasyUI 分页 简洁代码

    做分页代码,看到网上很多人实现的方法,那是各种调用,各种获取对象.我很不解,因为Easyui已经给我们了分页的具体实现,为什么有些人要画蛇添足呢. 其实真正的分页,在你的代码中,别人可能都没有注意到, ...

  10. day16正则表达式作业

    1.匹配一篇英文文章的标题 类似 The Voice Of China #([A-Z][a-z]*)( [A-Z][a-z]*)* 2.匹配一个网址 #(https|http|ftp):\/\/[^\ ...