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

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 5
    return 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。

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

相关文章:

  • 【设计原则】里氏替换原则(LSP):构建稳健继承体系的黄金法则
  • docx.js详细教程:入门到入土,没有之一(持续迭代中....)
  • Spring Cloud Gateway 整合Spring Security
  • 【CSS—前端快速入门】CSS 常用样式
  • 使用 `resolvectl` 配置 DNS 的技术文档
  • 【Python 数据结构 1.零基础复习】
  • QEMU源码全解析 —— 内存虚拟化(23)
  • 蓝桥杯试题:DFS回溯
  • TypeScript 类型声明
  • Kali Linux 2024.4版本全局代理(wide Proxy)配置,适用于浏览器、命令行
  • Pytorch中的ebmedding到底怎么理解?
  • 小皮网站搭建
  • 开源电商项目、物联网项目、销售系统项目和社区团购项目
  • qt-C++笔记之QToolButton和QPushButton的区别
  • 算法1-2 分数线划定
  • Saleae逻辑分析仪的安装与使用
  • 1.2 Scala变量与数据类型
  • Kafka面试题及原理
  • git笔记
  • Java进阶——常用工具类
  • “先增聘再离任”又添一例,景顺长城基金经理鲍无可官宣辞职
  • 乌称苏梅州一公共汽车遭俄军袭击,致9死4伤
  • 特朗普政府涉税改法案遭众议院预算委员会否决
  • 上海:到2027年,实现近海航线及重点海域5G网络高质量覆盖
  • 北方将现今年首场大范围高温天气,山西河南山东陕西局地可超40℃
  • 降水较常年同期少五成,安徽四大水利工程调水超11亿方应对旱情