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

C++数据结构之数组(详解)

1.介绍

        在C++中,数组是一种基本的数据结构,用于存储相同类型的元素的集合。数组的元素在内存中是连续存储的,可以通过索引访问。下面将详细介绍C++数组的相关内容。

2.数组的定义

        数组的定义需要指定元素的类型和数组的大小。

type arrayName[arraySize];

        type:数组元素的类型(如 int、char)等。

        arrayName:数组的名称。

        arraySize:数组的大小(必须是常量表达式)。

        示例:

int arr[5]; // 定义一个包含 5 个整数的数组
3.数组的初始化

        数组可以在定义时初始化,也可以后续赋值。

        (1)定义时初始化

int arr[5] = {1, 2, 3, 4, 5}; // 初始化数组

        (2)部分初始化

int arr[5] = {1, 2}; // 前两个元素初始化为 1 和 2,其余为 0

        (3)自动推断大小

int arr[] = {1, 2, 3, 4, 5}; // 数组大小自动推断为 5
4.访问数组元素

        数组通过索引访问,索引从0开始。

int arr[5] = {10, 20, 30, 40, 50};
std::cout << arr[0]; // 输出 10
std::cout << arr[2]; // 输出 30
5.数组的遍历

        可以使用循环遍历数组。

for (int i = 0; i < 5; i++) {std::cout << arr[i] << " ";
}//范围for循环(C++11及以上)
for (int num : arr) {std::cout << num << " ";
}
6.数组的大小

        可以使用sizeof运算符计算数组的大小或元素个数。

int arr[5] = {1, 2, 3, 4, 5};
std::cout << "数组大小(字节数): " << sizeof(arr) << std::endl; // 输出 20(5 * 4)
std::cout << "数组元素个数: " << sizeof(arr) / sizeof(arr[0]) << std::endl; // 输出 5
7.多维数组

C++支持多维数组(如二维数组,三维数组等)。

int arr[3][4] = {{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}
};std::cout << arr[1][2]; // 输出 7
8.数组的局限性

        局限性:数组的大小必须在定义时确定,且不能动态调整。

        越界访问:访问数组时如果索引超出范围,会导致未定义行为。

        不支持动态扩展:数组的大小不能动态扩展或缩小。

9.数组与指针

        数组名是一个指向数组首地址的指针。

int arr[5] = {1, 2, 3, 4, 5};
int* ptr = arr; // ptr 指向数组的第一个元素
std::cout << *ptr; // 输出 1
std::cout << *(ptr + 2); // 输出 3
10.数组作为函数参数

        数组可以作为函数参数传递,但会退化为指针。

void printArray(int arr[], int size) {for (int i = 0; i < size; i++) {std::cout << arr[i] << " ";}
}int main() {int arr[5] = {1, 2, 3, 4, 5};printArray(arr, 5); // 输出 1 2 3 4 5return 0;
}
11.动态数组

        如果需要动态调整数组的大小,可以使用vector(动态数组)。

#include <vector>std::vector<int> vec = {1, 2, 3};
vec.push_back(4); // 动态扩展数组
std::cout << vec[3]; // 输出 4
12.数组的替代方案

        (1)array(C++11及以上)

                特点:固定大小的数组,提供更好的类型安全性和接口。

        示例:

#include <array>
std::array<int, 5> arr = {1, 2, 3, 4, 5};
std::cout << arr[2]; // 输出 3

        (2)vector

                特点:动态大小的数组,支持自动扩展和收缩。

        示例:

#include <vector>
std::vector<int> vec = {1, 2, 3};
vec.push_back(4); // 动态扩展
std::cout << vec[3]; // 输出 4
13.总结

        数组作为C++中最基本的数据结构之一,适合存储固定大小的元素集合。对于更灵活的需求,推荐使用vector和array。

如有错误,敬请指正!!!

相关文章:

C++数据结构之数组(详解)

1.介绍 在C中&#xff0c;数组是一种基本的数据结构&#xff0c;用于存储相同类型的元素的集合。数组的元素在内存中是连续存储的&#xff0c;可以通过索引访问。下面将详细介绍C数组的相关内容。 2.数组的定义 数组的定义需要指定元素的类型和数组的大小。 type arrayName[a…...

AWS API Gateway灰度验证实现

在微服务架构中,灰度发布(金丝雀发布)是验证新版本稳定性的核心手段。通过将小部分流量(如 10%)导向新版本服务,可以在不影响整体系统的情况下快速发现问题。AWS API Gateway 原生支持流量按比例分配功能,无需复杂编码即可实现灰度验证。本文将详细解析其实现方法、最佳…...

【Elasticsearch】Elasticsearch 的`path.settings`是用于配置 Elasticsearch 数据和日志存储路径的重要设置

Elasticsearch 的path.settings是用于配置 Elasticsearch 数据和日志存储路径的重要设置&#xff0c;这些路径在elasticsearch.yml配置文件中定义。以下是关于 Elasticsearch 的路径设置&#xff08;path.data和path.logs&#xff09;以及快照存储库配置的详细说明&#xff1a;…...

Redis 实战篇 ——《黑马点评》(下)

《引言》 &#xff08;下&#xff09;篇将记录 Redis 实战篇 最后的一些学习内容&#xff0c;希望大家能够点赞、收藏支持一下 Thanks♪ (&#xff65;ω&#xff65;)&#xff89;&#xff0c;谢谢大家。 传送门&#xff08;上&#xff09;&#xff1a;Redis 实战篇 ——《黑马…...

蓝桥杯自我复习打卡

总复习&#xff0c;打卡1. 一。排序 1。选段排序 太可恶了&#xff0c;直接全排输出&#xff0c;一个测试点都没过。 AC 首先&#xff0c;这个【l,r】区间一定要包含p,或者q&#xff0c;pq一个都不包含的&#xff0c;[l,r]区间无论怎么变&#xff0c;都对ans没有影响。 其次&…...

Spring Boot拦截器(Interceptor)与过滤器(Filter)详细教程

Spring Boot拦截器&#xff08;Interceptor&#xff09;与过滤器&#xff08;Filter&#xff09;详细教程 目录 概述 什么是拦截器&#xff08;Interceptor&#xff09;&#xff1f;什么是过滤器&#xff08;Filter&#xff09;&#xff1f;两者的核心区别 使用场景 拦截器的典…...

Java零基础入门笔记:(6)面向对象

前言 本笔记是学习狂神的java教程&#xff0c;建议配合视频&#xff0c;学习体验更佳。 【狂神说Java】Java零基础学习视频通俗易懂_哔哩哔哩_bilibili 第1-2章&#xff1a;Java零基础入门笔记&#xff1a;(1-2)入门&#xff08;简介、基础知识&#xff09;-CSDN博客 第3章…...

【3天快速入门WPF】13-MVVM进阶

目录 1. 窗体设置2. 字体图标3. 控件模板4. 页面逻辑4.1. 不使用MVVM4.2. MVVM模式实现本篇我们开发一个基于MVVM的登录页面,用来回顾下之前学习的内容 登录页面如下: 窗体取消了默认的标题栏,调整为带阴影的圆角窗体,左侧放一张登录背景图,右边自绘了一个关闭按钮,文本框…...

【MongoDB】在Windows11下安装与使用

官网下载链接&#xff1a;Download MongoDB Community Server 官方参考文档&#xff1a;https://www.mongodb.com/zh-cn/docs/manual/tutorial/install-mongodb-on-windows/#std-label-install-mdb-community-windows 选择custom类型&#xff0c;其他默认 注意&#xff0c;此选…...

Kotlin 5种单例模式

在Kotlin中实现单例模式有多种方法&#xff0c;以下是几种常见的方法&#xff1a; 饿汉式 饿汉式是最简单的一种实现方式&#xff0c;在类加载时就完成了实例的初始化。 //饿汉式 object Singleton1 {fun printMessage() {println("饿汉式")} }懒汉式 懒汉式是延迟…...

C语言复习5:字符串的定义,字符串的常用函数

## 字符串变量的定义方式 - 在C语言中&#xff0c;没有单独的字符串变量&#xff0c;但可以利用字符数组来存字符串 - 占位符&#xff1a;%s - 定义1&#xff1a; 数据类型 变量名[内存占用大小] "字符串"; eg: char s…...

【Multipath网络层协议】MPTCP工作原理

常见网络层多路径协议介绍 MPTCP&#xff08;Multipath TCP&#xff09; MPTCP 是在传统 TCP 基础上进行扩展的协议&#xff0c;它允许在源端和目的端之间建立多个 TCP子流&#xff0c;这些子流可以通过不同的网络路径传输数据。 例如&#xff0c;一台笔记本电脑同时连接了 W…...

deepseek使用记录18——文化基因美食篇

子篇&#xff1a;薪火相传的味觉辩证法——从燧人氏到预制菜的文化突围 一、石器时代的启蒙&#xff1a;食物探索中的原始辩证法 在贾湖遗址的陶罐残片上&#xff0c;碳化稻米与蜂蜜的结晶层相互交叠&#xff0c;这是9000年前先民对"甘"与"饱"的首次辩证…...

2025学年安徽省职业院校技能大赛 “信息安全管理与评估”赛项 比赛样题任务书

2024-2025 学年广东省职业院校技能大赛 “信息安全管理与评估”赛项 技能测试试卷&#xff08;五&#xff09; 第一部分&#xff1a;网络平台搭建与设备安全防护任务书第二部分&#xff1a;网络安全事件响应、数字取证调查、应用程序安全任务书任务1 &#xff1a;内存取证&…...

在 Ansys Maxwell 中分析磁场

在 Ansys Maxwell 中分析磁场 分析磁场的能力对于理解电磁系统至关重要。Ansys Maxwell 为工程师提供了强大的工具&#xff0c;帮助他们探索磁场数据并从中提取有价值的见解。在本指南中&#xff0c;我将深入研究 Ansys Maxwell 中的几种基本技术和方法&#xff0c;以有效地分…...

springboot项目Maven打包遇到的问题总结

java -jar 执行报错中没有主清单属性 Spring Boot的可执行JAR需要依赖该插件生成正确的主清单属性。在 pom.xml 的 部分添加以下配置&#xff1a; <build><plugins><!-- 必须配置此插件才能生成可执行的Spring Boot JAR --><plugin><groupId>o…...

DeepSeek FlashMLA:用技术创新破解大模型落地难题

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》&#xff08;人工智能科学与技术丛书&#xff09;【陈敬雷编著】【清华大学出版社】 文章目录 DeepSeek大模型技术系列十四DeepSeek大模型技术系列十四》DeepS…...

[补充]原码、反、补、移码的转换

近期在学习Java的类型转换的知识&#xff0c;强制类型转换的时候会遇到数据&#xff08;丢失&#xff09;溢出的问题。 最后在IDEA控制台输出的时候&#xff0c;出现了负数。了解了一下强制类型转换在计算机中的原理&#xff0c;随后就复习了一下原码、反、补、移码的转换的知…...

Hue 编译异常:ImportError: cannot import name ‘six‘ from ‘urllib3.packages‘

个人博客地址&#xff1a;Hue 编译异常&#xff1a;ImportError: cannot import name six from urllib3.packages | 一张假钞的真实世界 在编译Hue的时候出现错误信息如下&#xff1a; Running /home/zhangjc/ysten/git/ysten-hue/build/env/bin/hue makemigrations --noinpu…...

【Maven】将普通Eclipse项目改造为Maven项目(非SpringBoot项目)

文章目录 将普通Eclipse项目改造为Maven项目&#xff08;非SpringBoot项目&#xff09;Maven安装与配置项目结构改造父子Pom.xml文件配置&#xff08;继承与集成&#xff09;父项目下的pom.xml文件配置普通子模块下的pom.xml配置启动模块的pom.xml配置 多模块编译总结 Maven插件…...

安装Node.js

1.打开官网&#xff0c;下载安装包 2.安装过程中&#xff0c;全部默认&#xff0c;next. 3.在安装根目录下&#xff0c;新建两个文件夹【node_cache】和【node_global】 4.检测是否安装成功 打开控制台&#xff0c;node -v, npm -v, 显示版本号。 5.配置环境变量 1>从no…...

物联网同RFID功能形态 使用场景的替代品

在物联网&#xff08;IoT&#xff09;和自动识别技术领域&#xff0c;除了RFID标签外&#xff0c;还有一些其他技术产品可以在形态和大小上与RFID标签相似&#xff0c;同时提供类似或更强大的功能。以下是几种能够替代RFID标签的产品&#xff1a; 一、NFC标签 NFC&#xff08;…...

【力扣】堆相关总结

priority_queue std::priority_queue 是 C 标准库中的一个容器适配器&#xff0c;提供了堆&#xff08;Heap&#xff09;数据结构的功能。它通常用于实现优先队列&#xff0c;允许你高效地插入元素和访问最大或最小元素。 头文件 #include <queue> 基本定义 std::pri…...

【前端基础】3、HTML的常用元素(h、p、img、a、iframe、div、span)、不常用元素(strong、i、code、br)

HTML结构 一个HTML包含以下部分&#xff1a; 文档类型声明html元素 head元素body元素 例&#xff08;CSDN&#xff09;&#xff1a; 一、文档类型声明 HTML最一方的文档称为&#xff1a;文档类型声明&#xff0c;用于声明文档类型。即&#xff1a;<!DOCTYPE html>…...

【漫话机器学习系列】113.逻辑回归(Logistic Regression) VS 线性回归(Linear Regression)

逻辑回归 vs 线性回归&#xff1a;详解对比 在机器学习和统计学中&#xff0c;逻辑回归&#xff08;Logistic Regression&#xff09; 和 线性回归&#xff08;Linear Regression&#xff09; 都是非常常见的模型。尽管它们的数学表达式有一定的相似性&#xff0c;但它们的应用…...

3 算法1-3 回文质数

题目描述 因为 151 既是一个质数又是一个回文数&#xff08;从左到右和从右到左是看一样的&#xff09;&#xff0c;所以 151 是回文质数。 写一个程序来找出范围 [a,b](5≤a<b≤100,000,000)&#xff08;一亿&#xff09;间的所有回文质数。 输入格式 第一行输入两个正…...

Redis---缓存穿透,雪崩,击穿

文章目录 缓存穿透什么是缓存穿透&#xff1f;缓存穿透情况的处理流程是怎样的&#xff1f;缓存穿透的解决办法缓存无效 key布隆过滤器 缓存雪崩什么是缓存雪崩&#xff1f;缓存雪崩的解决办法 缓存击穿什么是缓存击穿&#xff1f;缓存击穿的解决办法 区别对比 在如今的开发中&…...

联合省选 2025 游记

Day 1 不会 LCT&#xff0c;不会字符串&#xff0c;不会博弈 快进到考场 t 1 t1 t1 很快想到枚举中位数再 check&#xff0c;然后就会了&#xff0c;思路很清晰写的很快 t 2 t2 t2 干想 1h 编出来 n m 2 3 nm^{\frac{2}{3}} nm32​&#xff0c;然后认为 t 3 t3 t3 会和去年…...

Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking

一.Skywalking介绍 Apache SkyWalking是一个开源的分布式追踪与性能监视平台&#xff0c;特别适用于微服务架构、云原生环境以及基于容器&#xff08;如Docker、Kubernetes&#xff09;的应用部署。该项目由吴晟发起&#xff0c;并已加入Apache软件基金会的孵化器&#xff0c;…...

Thonny+MicroPython+ESP32开发环境搭建

1、下载&安装Thonny 安装成功后&#xff0c;会在桌面生成快捷键 双击快捷键&#xff0c;打开程序&#xff0c;界面如下 2、下载MicroPython 下载地址&#xff1a;MicroPython - Python for microcontrollers v1.19版(推荐&#xff0c;此版本稳定)&#xff1a; https://do…...