STL::array之数组容器

C++, STL容器 array:固定大小数组深度解析 在C++标准库中,std::array是一个长期被低估的容器。作为C++11引入的现代特性,它完美融合了传统C数组的性能优势和STL容器的安全性。本文将深入探讨其设计原理,并结合实际场景分析其在内存优化中的独特价值。 阅读详情

本文是Devour Heavens撰写整理的关于C++标准库的知识,所有资料均来自于C++官方文档,欢迎转载。但是为了尊重原作者的劳动,请注明出处!谢谢! 

模板类

array

template < class T, size_t N > class array;

Array

Arrays是固定大小的顺序容器:他们拥有一定数目的元素并整理成一个严格的线性序列。

在内部一个数组容器不保存任何数据,除了本身的数组元素之外(即使它的大小是一个模板参数)。

它与普通数组声明存储空间大小[]的方式是一样有效的。

Array类仅仅只是增加了一层全局函数,以使它可以像标准容器一样使用。

与其他标准容器不同,Array的大小是确定的而且不会通过分配的运算符管理元素。Arrays是一种聚集类型封装了一个确定大小的元素数组。因此,Arrays不可以动态地扩大或缩小(可以参看相似的vector容器其大小是可以扩大的)。

零大小的Arrays是有效的,但是不可以被成员函数front、back、data间接引用。

与其他标准库中的容器操作不同,交换两个数组容器是一次性的操作单独地包含范围内所有元素的交换操作,这通常来说是一种相当有效的操作。换而言之这样可以允许元素的迭代器可以保留两个数组容器原始关联。

另一个唯一的特性就是Array容器可以作为tuple类处理,头文件<array>中重载了get函数存取数组中的元素,如果它是tuple以及专门的tuple_size和tuple_element类型。

容器属性

序列

在一个严格的线性序列中序列容器的元素是有序的。个别元素的访问是通过他们在这个序列中的位置。

连续存储

元素是以连续的内存方式存储的,允许固定的时间随机访问元素。指向元素的指针可以偏移地址的方式访问其他元素。

固定大小的集合

容器使用默认的构造和析构函数静态地分配内存空间,其大小在编译时是不变的。没有内存和时间的开销。

模板参数

T

 所含元素的类型。作为成员类型forward_list:: value_type的别名。

N

 数组的大小,依据元素的个数。

在数组容器的成员函数的参考,这些相同的名称被假定为模板参数。

成员类型

下面的别名数组成员的类型。他们被广泛用作参数和返回类型的成员函数:


 

成员类型

定义

注释
value_typeThe first template parameter (T) 
referencevalue_type& 
const_referenceconst value_type& 
pointervalue_type* 
const_pointerconst value_type* 
iteratora random access iterator to value_typeconvertible to const_iterator
const_iteratora random access iterator to const value_type 
reverse_iteratorreverse_iterator<iterator> 
const_reverse_iteratorreverse_iterator<const_iterator> 
size_typesize_tunsigned integral type
difference_typeptrdiff_tsigned integral type

成员函数

迭代器

容量

元素存取

元素修改

全局函数

 

使用boost::multi_array模块实现多维数组STL容器的交互 在这个示例中,我们首先定义了一个2x3的二维数组,使用boost::multi_array模块。boost::multi_array是一个功能强大的C++库,用于处理多维数组。本文将介绍如何使用boost::multi_array模块来确保多维数组STL容器的有效使用,并提供相应的源代码示例。以上就是使用boost::multi_array模块确保多维数组STL容器有效使用的简单示例。通过使用boost::multi_array,我们可以方便地处理多维数组,并且能够与STL容器进行无缝交互。 阅读详情

相关推荐

STL编写高效的数组容器: array

除了支持元素的访问外,array还提供了一些其他的成员函数,例如front()、back()、empty()、size()等等。array是其中一个最常用的容器之一,它以固定大小的连续空间存储元素,并具有许多优秀的性质。总的来说,array是一个非常实用的容器,它提供了高效的元素访问和许多有用的成员函数。在这个示例中,我们创建了一个长度为5的整数数组,并将它的值初始化为1、2、3、4、5。需要注意的是,由于array是一个固定大小的容器,因此它的大小在创建时就已经确定,并且不能动态更改。

CodeMaven的博客 84

STL:std::array 和 基本数组类型array 浅谈一二三

std::array 和 基本数组类型array 优缺点比较,使用示例

Mr.Sugarcane 2448

STL】C++ STLarray详解

c++ STLarray详解

行码棋 2万+

学习 STL数组

STL数组 1.定义形式: array <int, 5> d1={2, 1, 3, 4, 1}; array <float, 5> d2={1.1,2.1,2.2,3.1,4.1}; array<string,5> d3={“one”,“tow”,“three”,“four”,"five’;} 2.常见方法 2.1 swap(); swap(d1,d2); 实...

weixin_43553231的博客 717

【总结】C++ 基础数据结构 —— STL之动态数组vector)用法详解

文章目录一、vector 的概念二、vector 的基本操作三、vector 的用法 一、vector 的概念 在 C++ 中,vector是一个十分有用的容器。 它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。 有些时候想开一个数组但却不知道开多大的数组比较好,因为数组的长度可能会有变化,这时候我们就需要运用到动态数组,也...

360°顺滑 1468

STL容器array

]

2303_76295261的博客 382

c++stl和std_C ++ STL数组容器– std :: array

Here you will learn about STL Array Container in C++ i.e.std::array. 在这里,您将了解C ++中的STL数组容器,即std :: array。 I Hope you know about C-type arrays (arrays in C language). Since C++ is just extension to ...

culing2941的博客 729

C++ STL容器:序列式容器-数组string,vectorarray,bitset

CC++ STL(Standard Template Library,标准模板库)在C++编程中的重要性不容忽视,STL提供了一系列容器、迭代器、算法和函数对象,这些组件极大地提高了C++程序的开发效率和代码质量。STL 容器 分为 2 大类 , 分别是“序列式容器” 和“关联式容器 ”。本文介绍的是序列式容器-数组string,vectorarray,bitset。

weixin_45068267的博客 1083

STL::array」标准库容器array数组)介绍(C++)

array 是一种C++标准模板库STL中定义的一种序列容器,它提供了对数组的初步封装。

dakingffo的博客 893

C++ STL标准库:序列容器 固定数组array(C++ 11)

array是C++11中新提出来的容器类型,使用类模板包装了普通数组,一个 固定大小的顺序容器,与普通数组相比,array更容易使用,更安全,可用来替代内置数组。 官方文档: array - C++ Reference (cplusplus.com) array 容器以类模板的形式定义在 <array> 头文件,并位于命名空间 std 中,如下所示: namespace std{ template <typename T, size_t N> class array;

超级大洋葱的博客 1781

Boost源码简析系列——Array(1)

Boost源码简析系列——Array(1)Array是Nicolai M.Josuttis为boost扩展库编写的一个类,她为静态数组增加了容器的一些特性,比如增加了迭代器,类似vector的元素访问访问方式等等。下面对boost的简介部分翻译自boost说明文档。C++标准模板(STL)作为C++标准库的一部分,她提供了种类繁多的容器类,然而,对于普通的数组类,STL就没有提供其

sixsavage的专栏 1512

boost笔记3(boost::array)

boost::array很遗憾,STL标准容器中并没有数组容器, 对于一组固定大小的数据, 用vector并不一定比Array合适,vector毕竟是大小可变的。而且个人认为,这样会使概念不够清晰,毕竟Arrayvector概念上并不是完全等同的。boost::array就是数组容器类实现,他完全兼容STL,很有希望被加入下一代的C++标准中。Boost::array内部仍然是固定长度,但是却...

hyqryq的专栏 364

引领Boost(五)(Boost::array

一 Boost::array       在以前,如果我们要处理一组数据,我们可能使用一般数组存储,或者需要许多的对数组的数据的操作的时候,我们使用STL容器存储。但是如果我们的需求是,我们能够提前固定一组数据的大小,或提前知道这组数据的大小,但是我们又想这组数据进行一些操作,比如排序。。。显然对这个情况,上面的使用原始数组STL容器都有点不太合适,因为原始的数组显得笨重,的我们自己实现一些重复

Ghost 975

c++ 中的容器 vector数组 array

当初自学 c++ 与 c 语言时,一直被指针弄的云里雾里。后来 c++ 中引入了容器,避免了指针。但是,一些教材把容器的章节放在书本中后面的章节,太不合理。应该把这种方便的功能放到前面,这样一些初学者就不会遇到太多生硬难懂的知识点从而对这个语言望而却步了。让 AI 总结了相关知识点,方便自己以后查阅。

天天向上的专栏 1278

boost::array与std::vector使用与性能

大家都希望可以像操作STL容器一样的去操作数组,C++可没有提供这个东西,有时候你会选择使用vector来替代,不过这毕竟不是个好的办法,毕竟vector模拟动态数组比较稳妥,而用它去替代一个普通的数组,开销毕竟太大了。而恰好,boost::array就为你提供了这个功能。boost::array的定义如下(简化): 详情参见相关文件 template&lt;class T, std::s...

weixin_33851604的博客 214

C++ STL源码剖析 tr1与std array

C++ STL源码剖析 tr1与std array 深入底层,层层剖析 by 光城 0.导语源码剖析版本为gcc4.9.1。C++ tr1全称Technical ...

Francis的博客 740

使用STL的copy

STL中的<algorithm>有copy和copy_n等函数,用于对数组容器拷贝 用法是将对应的来源source和目的地destination的迭代器iterator,如果你使用的是copy_n还需要指定拷贝的长度count,将其逐一填入形参 如果是在Windows环境下,你还需要使用模板类stdext::checked_array_iterator来包装你的目标数组,它被包含...

AS588AS的博客 356
上一篇: Windows服务之实现对服务的控制管理
下一篇: STL::forward_list之前向链表
devourHeavens
博客等级 码龄15年 3粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值