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

列表的C++实

自动扩容

  1. List item

扩容基数为2
可以设置扩容因子(这里我没有设置)

代码实现如下:


//
// Created by shaoxinHe on 2024/6/4.
//#ifndef CPRIMER_MYLIST_H
#define CPRIMER_MYLIST_H#include <stdexcept>
#include <vector>namespace std {class myList {private:int *arr;int arrCapacity = 10;       // 初始化大小为10int arrSize = 0;                // 当前列表数量int extendRation = 2;           // 扩容数量public:myList() {arr = new int[arrCapacity];}/** 析构删除数组元素* */~myList() {delete[]arr;}/** 获取当前元素数量* */int getSize() {return this->arrSize + 1;}/**  获取列表容量* */int getCapacity() {return this->arrCapacity;}/** 列表尾添加元素* */void add(int num) {if (arrSize == arrCapacity - 1) {extendArr();}arr[arrSize++] = num;}/** 在index位置插入元素num* */void insert(int num, int index) {if (index >= arrSize || index < 0) throw out_of_range("数组越界");if (arrSize + 1 == arrCapacity) extendArr();for (int i = arrSize; i > (index - 1); i--) {arr[i + 1] = arr[i];}arr[index - 1] = num;this->arrSize++;}/** 更新元素* */void set(int index, int num) {if (index < 0 || index >= this->arrSize) throw out_of_range("数组越界");arr[index] = num;}/** 获取指定位置的元素* */int getIndex(int index) {if (index < 0 || index >= arrSize) throw out_of_range("数组越界");else return arr[index - 1];}/** 删除元素* */void remove(int index) {if (index < 0 || index >= arrSize) throw out_of_range("数组越界");for (int i = index; i < this->arrSize; i++) {arr[i] = arr[i + 1];}arrSize--;}void extendArr() {      // 扩容列表int *temp = arr;this->arrCapacity *= this->extendRation;int *newArr = new int[this->arrCapacity];for (int i = 0; i <= arrSize; i++) {newArr[i] = temp[i];}delete[]temp;  // 释放空间this->arr = newArr;}/** 列表转换为Vector打印元素* */vector<int> toVector() {vector<int> vec(arrSize);for (int i = 0; i < arrSize; i++)vec[i] = arr[i];return vec;}};} // std#endif //CPRIMER_LIST_H
http://www.lryc.cn/news/371530.html

相关文章:

  • Chisel入门——在windows系统下部署Chisel环境并点亮FPGA小灯等实验
  • Python和C++赋值共享内存、Python函数传址传值、一些其他的遇到的bug
  • 深度解析ONLYOFFICE协作空间2.5版本新功能
  • Java I/O模型
  • 【简单介绍下Sass,什么是Sass?】
  • bat脚本—快速修改网络配置
  • node.js漏洞——
  • Qt多线程之moveToThread()函数
  • 【WEB前端2024】智体OS:poplang编程控制成本小千元的长续航robot机器人底盘(开源)
  • 动态规划法学习
  • 前端技术回顾系列 10|TS 泛型在类和接口中的应用
  • 【Ardiuno】实验ESP32单片机自动配置Wifi功能(图文)
  • xml数据解析
  • vite工程化搭建vue项目之自动按需导入
  • yolo-inference多后端+多任务+多算法+多精度模型 框架开发记录(python版)
  • uniapp使用vue3语法构建自定义导航栏,适配小程序胶囊
  • wpf、winform 监听USB拔插时触发
  • C语言:指针笔试题
  • 搜维尔科技:Movella旗下的Xsens在人形机器人开发中得到广泛应用
  • k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
  • Mock数据
  • 【MySQL】性能分析
  • MyBatis插件机制
  • NVIDIA Jetson Linux 35.3.1-开发指南-导言
  • 14. fastLED调色板
  • bugku---misc---赛博朋克
  • vue+elementplus模拟“山野愚人居”简单实现个人博客
  • ComfyUI 完全入门:Refiner精炼器
  • FastAPI操作关系型数据库
  • 数字化那点事:一文读懂智慧城市