当前位置: 首页 > news >正文

【STL三】序列容器——array容器

【STL三】序列容器——array

  • 一、array简介
  • 二、头文件
  • 三、模板类
  • 四、成员函数
    • 1、迭代器
    • 2、元素访问
    • 3、容量
    • 4、操作
  • 五、demo
    • 1、容量(不使用迭代器)
    • 2、使用迭代器
    • 3、元素访问 at()、front()、back()、data()

一、array简介

  • array 容器是 C++ 11 标准中新增的序列容器,简单地理解,它就是在 C++ 普通数组的基础上,添加了一些成员函数和全局函数。在使用上,它比普通数组更安全,且效率并没有因此变差。

  • 和其它容器不同,array 容器的大小是固定的,无法动态的扩展或收缩,这也就意味着,在使用该容器的过程无法借由增加或移除元素而改变其大小,它只允许访问或者替换存储的元素。

  • 实际项目应用特别少。

在这里插入图片描述

二、头文件

#include <array>

三、模板类

template<class T,std::size_t N
> struct array;

四、成员函数

1、迭代器

成员函数功能
begin()返回指向容器中第一个元素的随机访问迭代器。
end()返回指向容器最后一个元素之后一个位置的随机访问迭代器,通常和 begin() 结合使用。
rbegin()返回指向最后一个元素的随机访问迭代器。
rend()返回指向第一个元素之前一个位置的随机访问迭代器。
cbegin()和 begin() 功能相同,只不过在其基础上增加了 const 属性,不能用于修改元素。
cend()和 end() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改元素。
crbegin()和 rbegin() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改元素。
crend()和 rend() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改元素。

2、元素访问

成员函数功能
operator[]访问指定的元素
at(n)返回容器中 n 位置处元素的引用,该函数自动检查 n 是否在有效的范围内,如果不是则抛出 out_of_range 异常。
front()返回容器中第一个元素的直接引用,该函数不适用于空的 array 容器。
back()返回容器中最后一个元素的直接应用,该函数同样不适用于空的 array 容器。
data()返回一个指向容器首个元素的指针。利用该指针,可实现复制容器中所有元素等类似功能。

3、容量

成员函数功能
size()返回容器中当前元素的数量,其值始终等于初始化 array 类的第二个模板参数 N。
max_size()返回容器可容纳元素的最大数量,其值始终等于初始化 array 类的第二个模板参数 N。
empty()判断容器是否为空,和通过 size()==0 的判断条件功能相同,但其效率可能更快。

4、操作

成员函数功能
fill(val)将 val 这个值赋值给容器中的每个元素。
array1.swap(array2)交换 array1 和 array2 容器中的所有元素,但前提是它们具有相同的长度和类型。

五、demo

1、容量(不使用迭代器)

//array 容器。
#include <iostream>
#include <array>
#include<string>
using namespace std;
int main()
{array<string,5>  words{ "one","two","three","four","five" }; //words被初始化成有5个元素(固定)cout << "遍历(正序):" << endl;for (int i = 0; i < words.size(); ++i)cout << words[i] << " "; //像普通数组一样使用数组容器return 0;
}

输出

遍历(正序):
one two three four five

2、使用迭代器

  • begin()、end()、rbegin()、rend()
    在这里插入图片描述
//array 容器。
#include <iostream>
#include <array>
#include<string>
#include<vector>
using namespace std;
int main()
{array<string,5>  words{ "one","two","three","four","five" }; //words被初始化成有5个元素(固定)cout << "遍历(正序):" << endl;// std::array<string>::iterator iter;//错误,arr容器不可以像其他容器这样定义初始化,我也不清楚。for ( auto iter = words.begin(); iter < words.end(); ++iter)cout << *iter << " "; cout << endl;cout << "遍历(逆序):" << endl;for (auto iter = words.rbegin(); iter < words.rend(); ++iter)cout << *iter << " ";return 0;
}

输出

遍历(正序):
one two three four five
遍历(逆序):
five four three two one

3、元素访问 at()、front()、back()、data()

//array 容器。
#include <iostream>
#include <array>
#include<string>
using namespace std;
int main()
{array<string,5>  words{ "one","two","three","four","five" }; //words被初始化成有5个元素(固定)cout << "words.at(2)=" << words.at(2) << endl; cout << "words.front()=" << words.front() << endl;cout << "words.back()=" << words.back() << endl;string* da=words.data();while (!da->empty()){cout << "words.data()=" << *da << endl;da++;}return 0;
}

输出

words.at(2)=three
words.front()=one
words.back()=five
words.data()=one
words.data()=two
words.data()=three
words.data()=four
words.data()=five
words.data()=

参考:
1、C++ STL 容器库 中文文档
2、STL教程:C++ STL快速入门
3、https://www.apiref.com/cpp-zh/cpp/header.html
4、https://en.cppreference.com/w/cpp/container

相关文章:

【STL三】序列容器——array容器

【STL三】序列容器——array一、array简介二、头文件三、模板类四、成员函数1、迭代器2、元素访问3、容量4、操作五、demo1、容量&#xff08;不使用迭代器&#xff09;2、使用迭代器3、元素访问 at()、front()、back()、data()一、array简介 array 容器是 C 11 标准中新增的序…...

【STL四】序列容器——vector容器

【STL容器】序列容器——vector容器一、简介二、头文件三、模板类四、成员函数1、迭代器2、元素访问3、容量4、修改操作五、demo1、容量reserve、capacity、shrink_to_fit2、修改操作pop_back()、push_back3、修改操作insert()4、修改操作emplace()5、修改操作erase()、swap()、…...

4年功能测试,我一进阶python接口自动化测试,跳槽拿了20k......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 很多人在这求职市场…...

基于Pytorch的可视化工具

深度学习网络通常具有很深的层次结构&#xff0c;而且层与层之间通常会有并联、串联等连接方式。当使用PyTorch建立一个深度学习网络并输出文本向读者展示网络的连接方式是非常低效的&#xff0c;所以需要有效的工具将建立的深度学习网络结构有层次化的展示&#xff0c;这就需要…...

XCPC第十一站,带你学会图论基本算法

我们约定&#xff1a;以下n表示点的数目&#xff0c;m表示边的数目。 引子1——邻接表存储图的方法&#xff08;&#xff09;&#xff08;暂时不考虑重边和自环&#xff09; 现在我们有n个点&#xff08;编号为1~n&#xff09;和m条边&#xff0c;要用数组存储它们&#xff0c…...

【MySQL】1 MySQL的下载、安装与配置|提供安装包

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 目前,已开了以下专栏,欢迎关注与指导 1️⃣Java基础知识系统学习(持续更文中…) 2️⃣UML(已更完) 3️⃣MySQL(持续更文中…) MYSQL的下载、安装与配置1.下载MySQL5.71.1安装包的获…...

Redis 事务

目录Redis 事务一、Redis事务的概念&#xff1a;二、redis事务提出的逻辑&#xff1a;三、redis事务的基本操作四、事务的执行流程五、redis锁六、redis分布式锁Redis 事务 一、Redis事务的概念&#xff1a; Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令&…...

【linux】:进程控制

文章目录 前言一、什么是写时拷贝二、进程控制 1.进程终止2.进程等待三丶进程程序替换总结前言 了解上一篇文章中的进程地址空间后&#xff0c;我们再来说说进程控制的概念&#xff0c;进程控制我们需要搞清楚三个问题&#xff1a;如何进程终止&#xff0c;如何解决僵尸进程问…...

在recyclerview中使用其item布局的ViewBinding类需要注意的问题

问题描述 最近在使用RecycerView的瀑布流布局&#xff0c;我想直接用ViewBinding取得item中的一个TextView然后根据position进行赋值。 比如我点击测试标题2&#xff0c;它在日志中应该能打印出测试标题2才对。 但是他却打印出“测试标题0” 按理来说标题应该更点击的位置对…...

基于EB工具的TC3xx_MCAL配置开发05_ADC模块硬件Pwm触发Demo配置

目录 1.概述2. Pwm相关配置2.1 PWM->General配置2.2 PWM->PwmChannel配置2.2.1 Reference Pwm通道配置2.2.2 触发ADC采集的Pwm通道配置3. ADC相关配置3.1 AdcHwExtTrigSelect配置4. MCU相关配置4.1 GTM配置4.1.1 McuGtmTomAllocationConf配置4.1.2 GtmTriggerForAdc配置1…...

Qt示例3:用Qt画一个温度计

示例1 以下是用Qt绘制一个简单的温度计的示例代码&#xff1a; #include <QPainter> #include <QWidget> #include <QApplication> class Thermometer : public QWidget { public:Thermometer(QWidget *parent 0); protected:void paintEvent(QPaintEvent …...

全卷积网络FCN

这里写目录标题全卷积网络FCN1、FCN2、FCN上采样3、 FCN具体实现过程转置卷积全卷积网络FCN 引用&#xff1a;http://t.csdn.cn/pDcjL 1、FCN FCN: FCN是对图像进行像素级的分类&#xff08;也就是每个像素点都进行分类&#xff09;&#xff0c;从而解决了语义级别的图像分割…...

【Linux】基础IO流(上)

文章目录1. 预备知识2. 回忆C接口fopenfputsfprintfsnprintf追加方式—— a以读方式—— r3.操作系统如何进行读写文件操作open操作系统是如何让用户给自己传递标志位的理解标记位的问题新创建文件权限不正确解决 umask的权限write默认不会对原始文件清空系统层面追加系统层面 …...

【C++】类和对象三大特性--多态

文章目录1. 多态的基本概念2. 多态的定义及实现2.1多态的构成条件2.2 虚函数2.3虚函数的重写2.4 虚函数不能重写和检查是否重写 &#xff08;C11 &#xff09;2.5 重载、覆盖(重写)、隐藏(重定义)的对比3. 纯虚函数和抽象类3.1 概念3.2 接口继承和实现继承4.多态的实现原理4.1虚…...

【微前端】qiankun + vite + vue3

专栏&#xff1a; 【微前端】什么是微前端【微前端】qiankun【微前端】qiankun vite vue3 一、整体结构 在 qiankun 体系下&#xff0c;一个微前端工程包含一个主应用和多个子应用。本质上&#xff0c;每个工程&#xff08;主应用&#xff09;都可以单独开发、运行。 1.1…...

模型部署之TorchScript

一.关于torchscript和jit介绍 1.关于torchscript TorchScript是Pytorch模型&#xff08;继承自nn.Module&#xff09;的中间表示&#xff0c;保存后的torchscript模型可以在像C这种高性能的环境中运行 TorchScript是一种从PyTorch代码创建可序列化和可优化模型的方法。任何T…...

修改linux网卡配置文件的文件名

修改linux网卡配置文件的文件名 查看自己系统中网卡配置文件的文件名 #查看网卡的配置文件名&#xff0c;已经网络的状态 ip a查看系统是否可以使用ifconfig命令 #输入命令 ifconfig #出现以下图片表示ifconfig的命令可用。可能出现的错误&#xff1a;ifconfig command no foun…...

年轻人为啥热衷去寺庙?

年轻人的苦&#xff0c;寺庙最清楚。 周末的寺庙挤满了年轻人&#xff0c;北京雍和宫限流了&#xff0c;杭州灵隐寺十八籽的手串限购了&#xff0c;南京鸡鸣寺从地铁站出口就开始排队了...... “上班和上学&#xff0c;你选择哪个&#xff1f;” ”我选择上香“ 工作和学习…...

Java Spring 框架

当今世界&#xff0c;Java Spring 成为了最流行的 Java 开发框架之一。Spring 框架是一个轻量级的、高效的框架&#xff0c;它是 Java 应用程序开发的理想选择。在本文中&#xff0c;我们将深入探讨 Java Spring 框架的特性、优点以及如何使用它来构建高质量的应用程序。 1.Ja…...

基于OpenCV的人脸识别

目录 &#x1f969; 前言 &#x1f356; 环境使用 &#x1f356; 模块使用 &#x1f356; 模块介绍 &#x1f356; 模块安装问题: &#x1f969; OpenCV 简介 &#x1f356; 安装 OpenCV 模块 &#x1f969; OpenCV 基本使用 &#x1f356; 读取图片 &#x1f357; 【…...

别只改.prettierrc了!从Git配置到CI/CD,一劳永逸解决团队换行符冲突

从Git配置到CI/CD&#xff1a;彻底解决团队协作中的换行符冲突 跨平台协作开发时&#xff0c;换行符问题就像鞋里的一粒沙子——看似微不足道&#xff0c;却能让整个团队步履维艰。当Windows的CRLF遇上Unix的LF&#xff0c;不仅会导致Prettier报出恼人的Delete ␍错误&#xff…...

基于滑膜控制扰动观测器的永磁同步电机PMSM模型:四种控制策略大比拼

&#xff08;67&#xff09;基于滑膜控制扰动观测器的永磁同步电机PMSM模型 四个控制对比&#xff1a; 1、PID控制器 2、传统滑模控制器 3、最优滑模控制器 4、改进补偿滑膜控制器 [1]附带简单讲解视频 如下图 [2]附带出图四个控制对比的说明文档在永磁同步电机&#xff08;PM…...

LLM驱动的AI Agent故事生成与叙事能力

LLM驱动的AI Agent故事生成与叙事能力 关键词:LLM(大语言模型)、AI Agent、故事生成、叙事能力、自然语言处理 摘要:本文聚焦于LLM驱动的AI Agent在故事生成与叙事能力方面的技术。首先介绍了研究背景,包括目的、预期读者、文档结构和相关术语。接着阐述了核心概念,如LLM…...

Vita3K终极指南:在PC上完美运行PSVita游戏的完整教程

Vita3K终极指南&#xff1a;在PC上完美运行PSVita游戏的完整教程 【免费下载链接】Vita3K Experimental PlayStation Vita emulator 项目地址: https://gitcode.com/gh_mirrors/vi/Vita3K 想在电脑上重温PSVita经典游戏吗&#xff1f;Vita3K模拟器为你打开了一扇通往掌机…...

深入解析Franka ROS2控制器:关节位置、速度、阻抗控制有何不同?

深入解析Franka ROS2控制器&#xff1a;关节位置、速度、阻抗控制的核心差异与实战选择 在工业自动化和机器人研究领域&#xff0c;精确控制机械臂的运动是实现复杂任务的基础。Franka Emika机械臂凭借其高精度力控能力和开放的ROS2接口&#xff0c;已成为学术研究和工业应用的…...

OpenClaw备份与迁移:Qwen3.5-4B-Claude项目环境快速转移

OpenClaw备份与迁移&#xff1a;Qwen3.5-4B-Claude项目环境快速转移 1. 为什么需要备份与迁移方案 上周我的主力开发机突然硬盘故障&#xff0c;导致所有OpenClaw配置和技能丢失。在经历了8小时的手动重建后&#xff0c;我意识到必须建立一套可靠的备份迁移流程。特别是当我们…...

Vivado里SRIO IP核Basic模式配置详解:从链路宽度到Buffer深度,新手避坑指南

Vivado中SRIO IP核Basic模式配置全解析&#xff1a;从参数理解到实战避坑 第一次在Vivado中配置SRIO IP核时&#xff0c;面对密密麻麻的参数选项&#xff0c;大多数工程师都会感到无从下手。作为Xilinx FPGA中实现高速串行通信的关键IP&#xff0c;SRIO&#xff08;Serial Rap…...

摆脱论文困扰!盘点2026年口碑爆棚的的AI论文写作软件

一天写完毕业论文在2026年已不再是天方夜谭。最新测评显示&#xff0c;2026年AI论文写作软件凭借强大功能&#xff0c;彻底颠覆传统写作方式&#xff0c;覆盖选题、查重、润色、排版等全流程&#xff0c;实测效率提升超300%&#xff0c;让你高效搞定论文&#xff0c;轻松应对学…...

OpenClaw节日应用:GLM-4.7-Flash驱动春节祝福邮件批量定制与发送

OpenClaw节日应用&#xff1a;GLM-4.7-Flash驱动春节祝福邮件批量定制与发送 1. 为什么需要自动化节日邮件&#xff1f; 每年春节前&#xff0c;我都会陷入同样的困境——需要给200多位合作伙伴发送祝福邮件。手动操作意味着&#xff1a;反复复制粘贴内容、检查收件人姓名、调…...

用Lumerical MODE的EME Solver设计硅基波导耦合器:一个完整案例解析

硅基光子集成中的EME Solver实战&#xff1a;定向耦合器设计与性能优化全解析 光子集成电路(PIC)设计领域&#xff0c;模式展开法(EME)因其在长距离波导结构仿真中的独特优势&#xff0c;正成为工程师验证器件性能的首选工具。尤其在硅基定向耦合器这类关键无源器件的设计中&am…...