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

【C++】创建静态数组,动态数组,vector数组

目录

  • 🌕静态数组
  • 🌕动态数组(使用new和delete)
    • 🌙利用指针创建数组 int* arr = new int[5];
    • 🌙创建“指针的指针类型”的数组
  • 🌕使用标准模板库(STL)中的vector

🌕静态数组

静态数组在声明时其大小就确定了,并且之后不能改变。

#include <iostream>  
using namespace std;  int main() {  // 创建一个包含5个整数的静态数组  int arr[5] = {1, 2, 3, 4, 5};  // 访问并打印数组元素  for(int i = 0; i < 5; i++) {  cout << arr[i] << " ";  }  cout << endl;  return 0;  
}

如果你没有初始化数组中的所有元素,那么那些未初始化的元素会被自动初始化为0(对于内置类型如int)。

🌕动态数组(使用new和delete)

C++也支持动态数组,其大小在运行时确定,并使用new关键字分配内存,使用delete关键字释放内存。

🌙利用指针创建数组 int* arr = new int[5];

#include <iostream>  
using namespace std;  int main() {  // 创建一个指针(地址)arr,它代表这 new int[5]这5个int空间的首地址。int* arr = new int[5];  // 初始化数组  for(int i = 0; i < 5; i++) {  arr[i] = i + 1;  }  // 访问并打印数组元素  for(int i = 0; i < 5; i++) {  cout << arr[i] << " ";  }  cout << endl;  // 释放动态数组占用的内存  delete[] arr;  return 0;  
}

注意,对于动态数组,你需要手动管理内存(分配和释放)。使用delete[]来释放动态分配的数组,而不是单个的delete。

🌙创建“指针的指针类型”的数组

int类型

int** array = new int*[5]

自己定义的Worker类

Worker** newSpace = new Worker*[5];

🌕使用标准模板库(STL)中的vector

C++标准模板库(STL)提供了一个更灵活且易于使用的数组替代品——vector。vector可以动态地增长和缩小,并且不需要手动管理内存。

#include <iostream>  
#include <vector>  
using namespace std;  int main() {  // 创建一个vector,初始时没有元素  vector<int> vec;  // 向vector中添加元素  for(int i = 1; i <= 5; i++) {  vec.push_back(i);  }  // 访问并打印vector中的元素  for(int i = 0; i < vec.size(); i++) {  cout << vec[i] << " ";  }  cout << endl;  return 0;  
}

vector是C++中管理动态数组的首选方式,因为它提供了比原始数组更多的功能和灵活性,同时隐藏了内存管理的复杂性。


http://www.mrgr.cn/news/24261.html

相关文章:

  • yarn install error Error: certificate has expired SSL证书过期
  • 汽车以太网100BASE-T1 和 1000BASE-T1特性
  • uniapp小程序,使用腾讯地图获取定位
  • PPT幻灯片的添加与编辑:全面技术指南
  • 【React源码解析】深入理解react时间切片和fiber架构
  • AI绘画:SD打光神器!(Stable Diffusion进阶篇:Imposing Consistent Light)
  • RGA模块的讲解
  • 半导体设备系列(2) 半导体设备与工厂控制仿真器Demo编写
  • 【开发】git相关
  • 秒懂:进程上下文切换
  • Oracle数据恢复—Oracle数据库误删除表数据如何恢复数据?
  • 网络操作系统项目
  • LEAN 类型系统属性 之 定义上相等的非确定性(Undecidability of Definitional Equality)注解
  • 蓝牙核心规范解析
  • chapter14-集合——(List)——day18
  • xLSTM模型学习笔记
  • 在 Android 中,事件的分发机制
  • JAVA学习-练习试用Java实现“二叉树的序列化与反序列化”
  • 多多优品:多多采集软件-不用买手-采集不限制
  • 【Web】骨架屏