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

c++ std::array使用笔记

c++ array使用笔记

      • 1. 构造
      • 2. 成员类型
      • 3. 元素访问
      • 4. 容量相关
      • 5. 填充与交换
      • 6. 比较操作
      • 7. 迭代器
      • 总结

array 是 C++ 标准库中的一个容器模板,它封装了一个固定长度的内建数组,并提供了类似于其他 STL 容器的接口。与内建数组相比, array 提供了更多的操作,如复制、比较、交换等。以下是 array 容器的主要接口及其功能的简要介绍:

1. 构造

  • 默认构造函数:创建一个空的 array 对象。
  • 初始化列表构造函数:允许使用初始化列表来初始化 array 中的元素。
std::array<int, 3> arr1; // 默认构造,元素未初始化
std::array<int, 3> arr2 = {1, 2, 3}; // 使用初始化列表构造

2. 成员类型

  • value_typearray 中元素的类型。
  • size_type:表示 array 大小的无符号整数类型。
  • iteratorconst_iterator:用于遍历 array 的迭代器类型。
  • referenceconst_reference:元素的引用类型。
std::array<int, 3>::value_type x = 10; // x 的类型是 int

3. 元素访问

  • operator[]:通过下标访问元素,不进行边界检查。
  • at():通过下标访问元素,进行边界检查,如果越界则抛出 std::out_of_range 异常。
  • front():访问第一个元素。
  • back():访问最后一个元素。
  • data():返回指向底层数组的指针。
std::array<int, 3> arr = {1, 2, 3};
int x = arr[0]; // 访问第一个元素
int y = arr.at(1); // 访问第二个元素,带边界检查
int z = arr.front(); // 访问第一个元素
int w = arr.back(); // 访问最后一个元素
int* p = arr.data(); // 获取底层数组的指针

4. 容量相关

  • empty():检查 array 是否为空(对于 array,只有在大小为 0 时才为空)。
  • size():返回 array 中元素的数量。
  • max_size():返回 array 可以容纳的最大元素数量(对于 arraysize()max_size() 通常相同)。
std::array<int, 3> arr = {1, 2, 3};
bool isEmpty = arr.empty(); // false
std::size_t size = arr.size(); // 3
std::size_t maxSize = arr.max_size(); // 3

5. 填充与交换

  • fill(value):将 array 中的所有元素设置为指定的值。
  • swap(other):交换两个 array 的内容。
std::array<int, 3> arr1 = {1, 2, 3};
std::array<int, 3> arr2 = {4, 5, 6};
arr1.fill(0); // arr1 变为 {0, 0, 0}
arr1.swap(arr2); // arr1 变为 {4, 5, 6}, arr2 变为 {0, 0, 0}

6. 比较操作

  • operator<=>(C++20 引入):用于比较两个 array 对象的元素。返回一个比较结果,可以是 std::strong_orderingstd::weak_orderingstd::partial_ordering
std::array<int, 3> arr1 = {1, 2, 3};
std::array<int, 3> arr2 = {1, 2, 4};
auto result = (arr1 <=> arr2); // 返回 std::strong_ordering::less

7. 迭代器

  • begin()end():返回指向 array 第一个元素和最后一个元素之后位置的迭代器。
  • cbegin()cend():返回指向 array 第一个元素和最后一个元素之后位置的常量迭代器。
  • rbegin()rend():返回指向 array 最后一个元素和第一个元素之前位置的逆向迭代器。
  • crbegin()crend():返回指向 array 最后一个元素和第一个元素之前位置的常量逆向迭代器。
std::array<int, 3> arr = {1, 2, 3};
for (auto it = arr.begin(); it != arr.end(); ++it) {std::cout << *it << " "; // 输出 1 2 3
}

总结

array 是一个固定大小的容器,提供了类似于内建数组的功能,但增加了更多的操作和安全性(如边界检查)。它适用于需要固定大小数组且希望使用 STL 风格的接口的场景。

相关文章:

c++ std::array使用笔记

c array使用笔记 1. 构造2. 成员类型3. 元素访问4. 容量相关5. 填充与交换6. 比较操作7. 迭代器总结 array 是 C 标准库中的一个容器模板&#xff0c;它封装了一个固定长度的内建数组&#xff0c;并提供了类似于其他 STL 容器的接口。与内建数组相比&#xff0c; array 提供了…...

第39天:安全开发-JavaEE应用SpringBoot框架Actuator监控泄漏Swagger自动化

时间轴&#xff1a; Java知识点&#xff1a; 功能&#xff1a;数据库操作&#xff0c;文件操作&#xff0c;序列化数据&#xff0c;身份验证&#xff0c;框架开发&#xff0c;第三方组件使用等. 框架库&#xff1a;MyBatis&#xff0c;SpringMVC&#xff0c;SpringBoot&#xf…...

浏览器JS打不上断点,一点就跳到其他文件里。浏览器控制台 js打断点,指定的位置打不上断点,一打就跳到其他地方了。

关闭JavaScript 源代码映射&#xff0c;F12开发者模式 设置->偏好设置->源代码/来源->JavaScript 源代码映射。 肯定不是这个原因导致的&#xff0c;但这个办法可以暂时解决问题&#xff0c;点完这个东西就隐藏了webpack&#xff0c;有懂的来讲讲。 又浪费一个小时…...

conda环境管理 kernel注册到jupyter notebook

本文核心目的&#xff1a;解决jupyter notebook找不到自己想要的指定conda环境 首先安装anaconda&#xff0c;在win搜索框打开anaconda prompt 按下ctrlc终止操作的时间很长。需要输入y来确认操作。 国内镜像源不能使用代理服务访问。要尝试代理服务的打开与关闭 下面是cond…...

【SpringBoot】【log】 自定义logback日志配置

前言&#xff1a;默认情况下&#xff0c;SpringBoot内部使用logback作为系统日志实现的框架&#xff0c;将日志输出到控制台&#xff0c;不会写到日志文件。如果在application.properties或application.yml配置&#xff0c;这样只能配置简单的场景&#xff0c;保存路径、日志格…...

15.7 LangChain 版智能销售顾问实战:构建企业级知识驱动型对话系统

LangChain 版智能销售顾问实战:构建企业级知识驱动型对话系统 关键词:LangChain 销售系统、知识图谱集成、对话状态管理、生产级部署、多链协同优化 1. LangChain 销售系统架构设计 1.1 模块化架构全景图 #mermaid-svg-42MLuD3aMcpX0y8c {font-family:"trebuchet ms&q…...

计算机网络基础:揭开网络世界的神秘面纱

计算机网络基础&#xff1a;揭开网络世界的神秘面纱 前言一、计算机网络的定义与基本概念1.1 计算机网络的定义1.2 计算机网络的基本组成 二、计算机网络的分类2.1 按地域范围分类2.2 按拓扑结构分类 三、计算机网络体系结构3.1 OSI 参考模型3.2 TCP/IP 参考模型 四、网络通信协…...

工会考试知识点分享

工会考试涵盖工会基础知识、劳动法及相关法律法规、时政等内容&#xff0c;以下是一些常见的知识点分享&#xff1a; 工会基础知识 工会的性质与职能&#xff1a;工会是职工自愿结合的工人阶级的群众组织&#xff0c;基本职责是维护职工合法权益&#xff0c;同时还具有组织、…...

az devops login报错:Failed to authenticate using the supplied token.

PowerShell&#xff0c;az devops login报错&#xff1a; Failed to authenticate using the supplied token. 检查了一下PAT token是对的。 检查命令&#xff1a; az devops login --organization https://dev.azure.com/xxxxxxxx/ 乍一看好像没问题问题&#xff0c;然后想…...

Halcon图像预处理算子 sobel算子、傅里叶变换算子、卷积算子

滤波类型算子适用噪声特点均值滤波mean_image高斯噪声平滑均匀&#xff0c;可能额模糊边缘中值滤波median_image椒盐噪声保留边缘&#xff0c;抑制脉冲噪声高斯滤波gauss_filter高斯噪声加权平均&#xff0c;边缘更平滑 均值滤波 mean_image(Image,ImageMean,MaskWidth,MaskHe…...

Java Web应用中获取客户端的真实IP地址

Java Web应用中获取客户端的真实IP地址,尤其在存在代理服务器的情况下。 代码示例: public static String getClientIP(HttpServletRequest request) {String ip = parseCommaSeparatedIPs(request.getHeader("X-Forwarded-For"));if (isInvalid(ip)) {ip = pars…...

洛谷————P11559 【MX-X7-T0】[LSOT-3] 嗯欧哎

P11559 【MX-X7-T0】[LSOT-3] 嗯欧哎 题目背景 原题链接&#xff1a;MXOJ Next。 嗯欧哎是欧哎界的知名比赛。本题可以用来检验嗯欧哎是否发挥出了真实水平。 此名称纯属虚构&#xff0c;不影射任何现实中的比赛或机构的名称。如有雷同&#xff0c;纯属巧合。 题目描述 一…...

2020年SCI1区TOP:异质综合学习和动态多群体粒子群算法HCLDMS-PSO,深度解析+性能实测

目录 1.摘要2.改进策略3.结果展示4.参考文献5.代码获取 1.摘要 本文提出了一种异质综合学习和动态多群体粒子群算法&#xff08;HCLDMS-PSO&#xff09;&#xff0c;该算法在综合学习&#xff08;CL&#xff09;策略的基础上&#xff0c;通过利用整个种群的全局最优经验来生成…...

FinRobot:一个使用大型语言模型进行金融分析的开源AI代理平台

文章目录 前言一、生态系统1. 金融AI代理&#xff08;Financial AI Agents&#xff09;2. 金融大型语言模型&#xff08;Financial LLMs&#xff09;3. LLMOps4. 数据操作&#xff08;DataOps&#xff09;5. 多源LLM基础模型&#xff08;Multi-Source LLM Foundation Models&am…...

【windows driver】 开发环境简明安装教程

一、下载路径 https://learn.microsoft.com/en-us/windows-hardware/drivers/other-wdk-downloads 二、安装步骤&#xff1a; 1、安装Visual Studio IDE 笔者建议安装最新版本&#xff0c;可以向下兼容。发文截止到目前&#xff0c;VS2022是首选&#xff0c;当前笔者由于项…...

强制完整性级别(MIL)和用户账户控制(UAC)的联系与区别

强制完整性级别&#xff08;MIL&#xff09; 和 用户账户控制&#xff08;UAC&#xff09; 都是 Windows 操作系统中的安全机制&#xff0c;旨在增强系统的安全性并防止恶意软件和攻击者在系统中获得更高的权限。尽管它们有共同的目标&#xff0c;但它们的工作原理、应用范围和…...

性能附录:如何计算并发用户数(摘自高楼老师《性能30讲》)

高楼老师《性能30讲》: 性能测试实战30讲-极客时间 感兴趣的同学可以去读一下&#xff0c;个人感觉写的非常好 目录 什么是并发? 在线用户数、并发用户数怎么计算 总结 什么是并发? 我们假设上图中的这些小人是严格按照这个逻辑到达系统的&#xff0c;那显然&#xff0c;…...

视频推拉流EasyDSS点播平台云端录像播放异常问题的排查与解决

EasyDSS视频直播点播平台是一个功能全面的系统&#xff0c;提供视频转码、点播、直播、视频推拉流以及H.265视频播放等一站式服务。该平台与RTMP高清摄像头配合使用&#xff0c;能够接收无人机设备的实时视频流&#xff0c;实现无人机视频推流直播和巡检等多种应用。 最近&…...

【Python系列】Python 连接 PostgreSQL 数据库并查询数据

???欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老…...

辛格迪客户案例 | 甫康(上海)健康科技有限责任公司药物警戒管理系统(PVS)项目

01 案例企业 甫康(上海)健康科技有限责任公司&#xff08;简称“甫康”&#xff09;该公司成立于2015年11月3日。公司的核心团队由来自中国和国外顶级制药公司的专业人士组成&#xff0c;与中国科学院上海药物研究所等知名研究机构保持紧密合作。此外&#xff0c;甫康药业还与…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

C++实现分布式网络通信框架RPC(2)——rpc发布端

有了上篇文章的项目的基本知识的了解&#xff0c;现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...