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>
STL-容器库101--array【C11】的更多相关文章
- STL标准库-容器-deque
技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性. deque双向开口可进可出的容器 我们知道连续内存的容器不能随意扩充,因为这样容易扩充别人那去 deque却可以,它创造了内存 ...
- STL标准库-容器-vector
技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性. 向量容器vector是一个动态数组,内存连续,它是动态分配内存,且每次扩张的原来的二倍. 他的结构如下 一 定义 vector ...
- STL标准库-容器-set与multiset
技术在于交流.沟通,转载请注明出处并保持作品的完整性. set与multiset关联容器 结构如下 set是一种关联容器,key即value,value即key.它是自动排序,排序特点依据key se ...
- STL标准库-容器-set与map
STL标准库-容器-set与multiset C++的set https://www.cnblogs.com/LearningTheLoad/p/7456024.html STL标准库-容器-map和 ...
- C++ 泛型程序设计与STL模板库(1)---泛型程序设计简介及STL简介与结构
泛型程序设计的基本概念 编写不依赖于具体数据类型的程序 将算法从特定的数据结构中抽象出来,成为通用的 C++的模板为泛型程序设计奠定了关键的基础 术语:概念 用来界定具备一定功能的数据类型.例如: 将 ...
- STL容器底层数据结构的实现
C++ STL 的实现: 1.vector 底层数据结构为数组 ,支持快速随机访问 2.list 底层数据结构为双向链表,支持快速增删 3.deque ...
- STL标准库-算法-常用算法
技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 介绍11种STL标准库的算法,从这11种算法中总结一下算法的基本使用 1.accumulate() 累加 2.for_each( ...
- STL 容器的概念
STL 容器的概念 在实际的开发过程中,数据结构本身的重要性不会逊于操作于数据结构的算法的重要性,当程序中存在着对时间要求很高的部分时,数据结构的选择就显得更加重要. 经典的数据结构数量有限,但是我们 ...
- [转]STL 容器一些底层机制
1.vector 容器 vector 的数据安排以及操作方式,与 array 非常相似.两者的唯一区别在于空间的运用的灵活性.array 是静态空间,一旦配置了就不能改变,vector 是动态数组.在 ...
- STL容器概述
STL容器 1.容器概述 1.1.容器分类 1.1.1.顺序容器:提供对元素序列的访问,顺序容器为元素连续分配内存或将元素组织为链表,元素的类型是容器成员value_type. 顺序容器 说明 vec ...
随机推荐
- c++计时
一.clock#include<ctime>clock_t start,end;start=clock();end=clock();cout<<start<<',' ...
- Pandas选择数据
1.简单筛选 >>> dates = pd.date_range(', periods=6) >>> df = pd.DataFrame(np.arange(24) ...
- LaTeX数学公式大全
原写于我的洛谷博客(传送门),现搬到这个博客上. 建议去洛谷博客上看,因为两边的编辑器在有些功能上不能通用,所以之后若有删改或新增内容只在洛谷博客上弄,这边就懒得改了. 原本是针对洛谷的编辑器,不过懒 ...
- Luogu 2173 [ZJOI2012]网络 - LCT
Solution $LCT$ 直接上$QuQ$ 注意$cut$ 完 需要 $d[u + c * N]--$ 再 $link$, 不然会输出Error 1的哦 Code #include<cs ...
- UOJ 67 新年的毒瘤 - Tarjan
Description 给出一个无向图, 要求找出某个点$u$, 去掉$u$和$u$所连的边, 所剩下的节点构成一棵树. Solution 首先, 割点肯定是不可能满足条件的, 因为去掉割点后会构成若 ...
- C++ 的虚析构函数
当一个基类的指针指向一个派生类的对象,并用该基类的指针去删除或者析构派生类对象时,如果基类的析构函数不是声明为虚函数,那么在析构时基类的析构函数将会被直接调用,派生类的析构函数应为没被调用而导致内存泄 ...
- websocket activemq
websocket:应用与服务端保持长连接 不停通信 activemq:偶发通信 心跳机制
- JSP动作
JSP动作元素在请求处理阶段起作用,他们会被转换成Java代码来执行操作,如访问一个Java对象或调用方法. JSP动作元素是用XML语法写成的. 动作元素基本上都是预定义的函数,JSP规范定义了一系 ...
- How To Configure SAMBA Server And Transfer Files Between Linux & Windows
If you are reading this article it means you have a network at home or office with Windows and Linux ...
- NETSHARP微信开发说明
一.微信开发介绍 1.微信分为个人号,订阅号.服务号,需要去理解三个号的区别,对于开发来说也需要了解不同的账号所提供的功能 2.微信号需要审批,审批之后有一些功能才能使用 3.微信提供的功能及使用情况 ...