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_type:array中元素的类型。size_type:表示array大小的无符号整数类型。iterator和const_iterator:用于遍历array的迭代器类型。reference和const_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可以容纳的最大元素数量(对于array,size()和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_ordering、std::weak_ordering或std::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 标准库中的一个容器模板,它封装了一个固定长度的内建数组,并提供了类似于其他 STL 容器的接口。与内建数组相比, array 提供了…...
第39天:安全开发-JavaEE应用SpringBoot框架Actuator监控泄漏Swagger自动化
时间轴: Java知识点: 功能:数据库操作,文件操作,序列化数据,身份验证,框架开发,第三方组件使用等. 框架库:MyBatis,SpringMVC,SpringBoot…...
浏览器JS打不上断点,一点就跳到其他文件里。浏览器控制台 js打断点,指定的位置打不上断点,一打就跳到其他地方了。
关闭JavaScript 源代码映射,F12开发者模式 设置->偏好设置->源代码/来源->JavaScript 源代码映射。 肯定不是这个原因导致的,但这个办法可以暂时解决问题,点完这个东西就隐藏了webpack,有懂的来讲讲。 又浪费一个小时…...
conda环境管理 kernel注册到jupyter notebook
本文核心目的:解决jupyter notebook找不到自己想要的指定conda环境 首先安装anaconda,在win搜索框打开anaconda prompt 按下ctrlc终止操作的时间很长。需要输入y来确认操作。 国内镜像源不能使用代理服务访问。要尝试代理服务的打开与关闭 下面是cond…...
【SpringBoot】【log】 自定义logback日志配置
前言:默认情况下,SpringBoot内部使用logback作为系统日志实现的框架,将日志输出到控制台,不会写到日志文件。如果在application.properties或application.yml配置,这样只能配置简单的场景,保存路径、日志格…...
15.7 LangChain 版智能销售顾问实战:构建企业级知识驱动型对话系统
LangChain 版智能销售顾问实战:构建企业级知识驱动型对话系统 关键词:LangChain 销售系统、知识图谱集成、对话状态管理、生产级部署、多链协同优化 1. LangChain 销售系统架构设计 1.1 模块化架构全景图 #mermaid-svg-42MLuD3aMcpX0y8c {font-family:"trebuchet ms&q…...
计算机网络基础:揭开网络世界的神秘面纱
计算机网络基础:揭开网络世界的神秘面纱 前言一、计算机网络的定义与基本概念1.1 计算机网络的定义1.2 计算机网络的基本组成 二、计算机网络的分类2.1 按地域范围分类2.2 按拓扑结构分类 三、计算机网络体系结构3.1 OSI 参考模型3.2 TCP/IP 参考模型 四、网络通信协…...
工会考试知识点分享
工会考试涵盖工会基础知识、劳动法及相关法律法规、时政等内容,以下是一些常见的知识点分享: 工会基础知识 工会的性质与职能:工会是职工自愿结合的工人阶级的群众组织,基本职责是维护职工合法权益,同时还具有组织、…...
az devops login报错:Failed to authenticate using the supplied token.
PowerShell,az devops login报错: Failed to authenticate using the supplied token. 检查了一下PAT token是对的。 检查命令: az devops login --organization https://dev.azure.com/xxxxxxxx/ 乍一看好像没问题问题,然后想…...
Halcon图像预处理算子 sobel算子、傅里叶变换算子、卷积算子
滤波类型算子适用噪声特点均值滤波mean_image高斯噪声平滑均匀,可能额模糊边缘中值滤波median_image椒盐噪声保留边缘,抑制脉冲噪声高斯滤波gauss_filter高斯噪声加权平均,边缘更平滑 均值滤波 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] 嗯欧哎 题目背景 原题链接:MXOJ Next。 嗯欧哎是欧哎界的知名比赛。本题可以用来检验嗯欧哎是否发挥出了真实水平。 此名称纯属虚构,不影射任何现实中的比赛或机构的名称。如有雷同,纯属巧合。 题目描述 一…...
2020年SCI1区TOP:异质综合学习和动态多群体粒子群算法HCLDMS-PSO,深度解析+性能实测
目录 1.摘要2.改进策略3.结果展示4.参考文献5.代码获取 1.摘要 本文提出了一种异质综合学习和动态多群体粒子群算法(HCLDMS-PSO),该算法在综合学习(CL)策略的基础上,通过利用整个种群的全局最优经验来生成…...
FinRobot:一个使用大型语言模型进行金融分析的开源AI代理平台
文章目录 前言一、生态系统1. 金融AI代理(Financial AI Agents)2. 金融大型语言模型(Financial LLMs)3. LLMOps4. 数据操作(DataOps)5. 多源LLM基础模型(Multi-Source LLM Foundation Models&am…...
【windows driver】 开发环境简明安装教程
一、下载路径 https://learn.microsoft.com/en-us/windows-hardware/drivers/other-wdk-downloads 二、安装步骤: 1、安装Visual Studio IDE 笔者建议安装最新版本,可以向下兼容。发文截止到目前,VS2022是首选,当前笔者由于项…...
强制完整性级别(MIL)和用户账户控制(UAC)的联系与区别
强制完整性级别(MIL) 和 用户账户控制(UAC) 都是 Windows 操作系统中的安全机制,旨在增强系统的安全性并防止恶意软件和攻击者在系统中获得更高的权限。尽管它们有共同的目标,但它们的工作原理、应用范围和…...
性能附录:如何计算并发用户数(摘自高楼老师《性能30讲》)
高楼老师《性能30讲》: 性能测试实战30讲-极客时间 感兴趣的同学可以去读一下,个人感觉写的非常好 目录 什么是并发? 在线用户数、并发用户数怎么计算 总结 什么是并发? 我们假设上图中的这些小人是严格按照这个逻辑到达系统的,那显然,…...
视频推拉流EasyDSS点播平台云端录像播放异常问题的排查与解决
EasyDSS视频直播点播平台是一个功能全面的系统,提供视频转码、点播、直播、视频推拉流以及H.265视频播放等一站式服务。该平台与RTMP高清摄像头配合使用,能够接收无人机设备的实时视频流,实现无人机视频推流直播和巡检等多种应用。 最近&…...
【Python系列】Python 连接 PostgreSQL 数据库并查询数据
???欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老…...
辛格迪客户案例 | 甫康(上海)健康科技有限责任公司药物警戒管理系统(PVS)项目
01 案例企业 甫康(上海)健康科技有限责任公司(简称“甫康”)该公司成立于2015年11月3日。公司的核心团队由来自中国和国外顶级制药公司的专业人士组成,与中国科学院上海药物研究所等知名研究机构保持紧密合作。此外,甫康药业还与…...
如何高效协作开发Fisher插件:团队合作的最佳实践指南
如何高效协作开发Fisher插件:团队合作的最佳实践指南 【免费下载链接】fisher A plugin manager for Fish 项目地址: https://gitcode.com/gh_mirrors/fi/fisher Fisher是Fish Shell的终极插件管理器,让团队协作开发插件变得简单高效。无论你是新…...
拉孚Larfe机场人流联动照明系统节能数据成果展示发布
春运期间对比测试验证长期节能效益显著 2026年4月7日 —— 拉孚Larfe自主研发的“机场人流联动照明系统”在完成阶段性调试后,于今年春运期间开展了一次对比测试。为配合机场春运前的验收安排,系统于春节前暂时关闭,恢复为传统手动控制模式&…...
DejaVuSansMono嵌入式位图字体库深度解析
1. 项目概述DejaVuSansMono 是一款专为嵌入式图形界面(尤其是 Cariad 显示框架)深度优化的开源位图字体库。它并非通用型矢量字体渲染引擎,而是将 DejaVu Sans Mono 字体家族经专业栅格化、字形精修与内存布局重构后生成的静态字模数据集合。…...
AirPlay协议开源实现全攻略:从Raspberry Pi到Linux的5种方案实测
AirPlay协议开源实现全攻略:从Raspberry Pi到Linux的5种方案实测 在智能家居和多媒体共享领域,AirPlay协议因其出色的用户体验和苹果生态的广泛普及而备受关注。然而,官方AirPlay服务仅限于苹果自家设备,这促使开发者社区涌现出多…...
【渗透工具】Venom多级代理实战:从零构建内网渗透通道
1. Venom工具入门:多级代理的核心价值 第一次接触Venom是在去年的一次内网渗透项目中。当时客户的内网结构复杂,常规代理工具难以穿透多层网络,直到同事推荐了这个用Go语言开发的神器。简单来说,Venom就像个数字隧道挖掘机&#x…...
2026就业新风口:AI、新能源、半导体领跑高薪时代,掌握这些技能让你年薪百万!
2026年中国就业市场呈现新质产业领跑、高薪向技术岗集中、城市梯度分化明显的核心特征,AI、新能源、半导体等赛道爆发式增长,一线城市依旧是高薪高地,新一线城市则凭借产业优势快速追赶。与此同时,AI已成为职场核心竞争力…...
从零到精通:我的泛微Ecology9二次开发实战笔记(含JS开发避坑指南)
从零到精通:我的泛微Ecology9二次开发实战笔记(含JS开发避坑指南) 第一次接触泛微Ecology9时,面对庞大的系统架构和复杂的二次开发文档,我像大多数新手一样感到无从下手。经过半年多的实战摸索,从环境搭建到…...
保姆级教程:在CentOS 7.9上为SinoDB V16.8配置DBeaver连接(附sqlhosts文件详解)
从零构建SinoDB V16.8与DBeaver的高效连接体系:CentOS 7.9环境全流程精解 当企业级数据库SinoDB遇上可视化工具DBeaver,如何构建稳定高效的连接环境成为数据工程师的必修课。本文将带您深入CentOS 7.9系统,从底层配置到界面操作,打…...
Kubernetes集群的自动化运维实践
Kubernetes集群的自动化运维实践 🔥 硬核开场 各位技术老铁,今天咱们聊聊Kubernetes集群的自动化运维实践。别跟我扯那些理论,直接上干货!在云原生时代,Kubernetes已经成为容器编排的事实标准,但随着集群规…...
旺店通与轻易云集成平台的无缝数据对接方案
数据源系统:旺店通企业奇门旺店通企业奇门是慧策旗下核心的智能零售解决方案,提供从订单管理到仓储物流的全链路服务。其特点包括:一体化智能零售平台,覆盖电商经营全流程打破数据孤岛,实现跨系统数据互通AI驱动的智能…...
