C++11 新特性:std::array

std::array是 C++11 中引入的容器类型,它封装了固定大小的数组,提供了类似于 STL 容器的接口,同时保持了 C 风格数组的性能特性。

与普通数组相比,std::array更安全、更易于使用,并且支持迭代器。以下是std::array提供的一些主要方法:

容量相关

  • empty():检查容器是否为空(即是否包含元素)。
  • size():返回容器中元素的数目。
  • max_size():返回容器可容纳的最大元素数目,对于std::array来说,这与size()相同。

元素访问

  • operator[]:访问指定位置的元素,不进行边界检查。
  • at():访问指定位置的元素,带有边界检查,如果索引越界,会抛出std::out_of_range异常。
  • front():返回容器中的第一个元素的引用。
  • back():返回容器中的最后一个元素的引用。
  • data():返回指向容器中第一个元素的指针。

修改器

  • fill():将容器中所有元素设置为某个特定值。
  • swap():与另一个std::array对象交换内容。

迭代器

  • begin()end():返回指向容器第一个元素和尾后元素的迭代器。
  • rbegin()rend():返回指向容器最后一个元素和头前元素的反向迭代器。
  • cbegin()cend()crbegin()crend():分别返回上述迭代器的常量版本。

示例代码

#include <array>
#include <iostream>int main() {std::array<int, 5> arr = {1, 2, 3, 4, 5};// 使用下标访问std::cout << "Element at index 2: " << arr[2] << std::endl;// 使用at()访问try {std::cout << "Element at index 4: " << arr.at(4) << std::endl;// 下面的代码会抛出 std::out_of_range 异常std::cout << "Element at index 5: " << arr.at(5) << std::endl;} catch (std::out_of_range& e) {std::cerr << "Error: " << e.what() << std::endl;}// 修改元素arr.fill(10);std::cout << "After fill(10):";for (int i : arr) {std::cout << " " << i;}std::cout << std::endl;// 迭代器遍历std::cout << "Elements:";for (auto it = arr.begin(); it != arr.end(); ++it) {std::cout << " " << *it;}std::cout << std::endl;return 0;
}

输出:

Element at index 2: 3
Element at index 4: 5
Element at index 5: Error: array::at: __n (which is 5) >= _Nm (which is 5)
After fill(10): 10 10 10 10 10
Elements: 10 10 10 10 10

std::array通过提供 STL 容器的接口,使得固定大小数组的使用更加灵活和安全。在需要固定大小数组,且希望利用STL容器特性时,它是一个非常有用的类型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/803224.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

-webkit-input-placeholder的意思

-webkit-input-placeholder是一个CSS伪类选择器&#xff0c;用于设置表单输入字段的占位文本样式。-webkit-input-placeholder是Webkit浏览器私有的前缀&#xff0c;用于适用于Webkit内核的浏览器&#xff08;如Chrome和Safari&#xff09;。 使用-webkit-input-placeholder&a…

鸿蒙HarmonyOS开发实例:【简单时钟】

简单时钟 介绍 本示例通过使用[ohos.display]接口以及Canvas组件来实现一个简单的时钟应用。 效果预览 主页 使用说明 1.界面通过setInterval实现周期性实时刷新时间&#xff0c;使用Canvas绘制时钟&#xff0c;指针旋转角度通过计算得出。 例如&#xff1a;"2 * M…

Microsoft Visio 参与者 [actor] - 人的形状图标

Microsoft Visio 参与者 [actor] - 人的形状图标 1. 更多形状 -> 搜索形状2. 参与者References 1. 更多形状 -> 搜索形状 2. 参与者 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

网络入门基础:从概念到实践

导言 网络已经成为了我们日常生活和工作中不可或缺的一部分&#xff0c;无论是用于沟通、学习、娱乐还是商务交易&#xff0c;网络都扮演着至关重要的角色。本文将介绍网络的基础知识&#xff0c;从概念到实践&#xff0c;帮助初学者了解网络的基本原理和构成&#xff0c;以便…

【简单讲解下如何Java中文乱码浅析及解决方案】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

力扣经典150题(1)

文章目录 6.Z字形变换82.删除排序链表中的重复元素||61.旋转链表100.相同的树 6.Z字形变换 将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时&#xff0c;排列如下&#xff1…

Spring循环依赖

Java开发常见面试题详解&#xff08;LockSupport&#xff0c;AQS&#xff0c;Spring循环依赖&#xff0c;Redis&#xff09;_java 常见面试题详解(locksupport-CSDN博客 循环依赖现象在spring容器中注入依赖的对象&#xff0c;有2种情况 构造器方式注入依赖&#xff08;不可行…

如何在HarmonyOS(鸿蒙操作系统)上进行应用开发

文章中提到的关键点包括&#xff1a; 学习ArkTS&#xff1a;作者建议初学者首先学习使用ArkTS编写Hello World程序&#xff0c;并可以通过TypeScript教程来快速掌握基础语法。对于有Flutter或React Native开发经验的开发者来说&#xff0c;页面布局会比较容易上手。 页面布局&…

基于遗传优化的SVD水印嵌入提取算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于遗传优化的的SVD水印嵌入提取算法。对比遗传优化前后SVD水印提取性能&#xff0c;并分析不同干扰情况下水印提取效果。 2.测试软件版本以及运行结果展示 MA…

18、差分

差分 题目描述 输入一个长度为n的整数序列。 接下来输入m个操作&#xff0c;每个操作包含三个整数l, r, c&#xff0c;表示将序列中[l, r]之间的每个数加上c。 请你输出进行完所有操作后的序列。 输入格式 第一行包含两个整数n和m。 第二行包含n个整数&#xff0c;表示整…

根据mysql的执行顺序来写select

过滤顺序指的是mysql的逻辑执行顺序&#xff0c;个人觉得我们可以按照执行顺序来写select查询语句。 目录 一、执行顺序二、小tips三、案例第一轮查询&#xff1a;统计每个num的出现次数第二轮查询&#xff1a;计算**最多次数**第三轮查询&#xff1a;找到所有出现次数为最多次…

图片地址生成二维码(通过前端实现)

文章目录 概要安装插件代码实例 概要 要将图片地址生成二维码&#xff0c;你可以使用 QrCode 库&#xff08;假设你已经在项目中引入了该库&#xff09;。以下是一个简单的示例代码&#xff0c;演示了如何使用 QrCode 库将图片地址转换为二维码并显示在页面上 安装插件 先下载…

Linux使用宝塔面板安装MySQL结合内网穿透实现公网连接本地数据库

文章目录 推荐前言1.Mysql服务安装2.创建数据库3.安装cpolar3.2 创建HTTP隧道 4.远程连接5.固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不…

【docker】Docker 简介

Docker 简介 什么是虚拟化、容器化?为什么要虚拟化、容器化&#xff1f;虚拟化实现方式应用程序执行环境分层虚拟化常见类别虚拟机容器JVM 之类的虚拟机 常见虚拟化实现主机虚拟化(虚拟机)实现容器虚拟化实现容器虚拟化实现原理容器虚拟化基础之 NameSpace 什么是虚拟化、容器…

ADC电路项目1——10bit SAR ADC 设计,smic18工艺,有工艺库,有效位数ENOB为9.8

分享一个入门SAR ADC的完整电路项目&#xff0c;适合新手小白学习 10bit 20MHz SAR ADC&#xff08;WX:didadidadidida313&#xff0c;加我备注&#xff1a;CSDN 10 bit SAR ADC&#xff0c;谢绝白嫖哈&#xff09; 概述&#xff1a; 本设计采用 smic18mmrf CMOS 工艺&#xf…

【自然语言】使用词袋模型,TF-IDF模型和Word2Vec模型进行文本向量化

一、任务目标 python代码写将 HarryPorter 电子书作为语料库&#xff0c;分别使用词袋模型&#xff0c;TF-IDF模型和Word2Vec模型进行文本向量化。 1. 首先将数据预处理&#xff0c;Word2Vec 训练时要求考虑每个单词前后的五个词汇&#xff0c;地址为 作为其上下文 &#xf…

OpenHarmony开发-连接开发板调试应用

在 OpenHarmony 开发过程中&#xff0c;连接开发板进行应用调试是一个关键步骤&#xff0c;只有在真实的硬件环境下&#xff0c;我们才能测试出应用更多的潜在问题&#xff0c;以便后续我们进行优化。本文详细介绍了连接开发板调试 OpenHarmony 应用的操作步骤。 首先&#xf…

java访问修饰符的访问范围 and 面向对象特征与区别

文章目录 java访问修饰符的访问范围java面向对象的基本特征面向对象与面向过程的区别其他链接 预定义类&#xff1a;由JDK提供的类 java访问修饰符的访问范围 java面向对象的基本特征 java面向对象的基本特征&#xff1a;封装、继承、多态&#xff08;接口&#xff09; 关键字…

蓝桥杯-油漆面积

代码及其解析:(AC80%&#xff09; 思路:是把平面划成单位边长为1&#xff08;面积也是1&#xff09;的方格。每读入一个矩形&#xff0c;就把它覆盖的方格标注为已覆盖&#xff1b;对所有矩形都这样处理&#xff0c;最后统计被覆盖的方格数量即可。编码极其简单&#xff0c;但…

PlantUML 是绘制 uml 的一个开源项目

拓展阅读 常见免费开源绘图工具 OmniGraffle 创建精确、美观图形的工具 UML-架构图入门介绍 starUML UML 绘制工具 starUML 入门介绍 PlantUML 是绘制 uml 的一个开源项目 UML 等常见图绘制工具 绘图工具 draw.io / diagrams.net 免费在线图表编辑器 绘图工具 excalidr…