之前在训练营的时候被要求用C语言实现一个可以存放任意类型数据的栈.现在尝试实现一个数组版本. 首先用到的结构体如下(接触了Win32编程所以长得有点像里面的那些类型): typedef struct { void *data; //用于保存数据的数组 size_t numOfElements; //表示数组元素个数 size_t sizeOfElements; //表示数组元素的大小 size_t capacity; //表示数组实际能容纳的元素个数 } VECTOR, *LPVECTOR; 在…
/* * DynamicArray.h * * Created on: 2019年7月22日 * Author: Jarvis */ #ifndef SRC_DYNAMICARRAY_H_ #define SRC_DYNAMICARRAY_H_ //动态增长内存 策略 将数据放到堆上 //动态数组 如果5个元素 申请内存 拷贝数据 释放内存 // 容量 capacity 表示我的这块内存空间一共可以存放多少个元素 // size 记录当前数组中具体的元素个数 //定义动态数组的结构体 typed…
vector是C++标准模板库中的部分内容,中文偶尔译作“容器”,但并不准确.它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据. 头文件:#include<vector> 参数:vector<int>v, int为数据类型,也可以是string,long long,double 代码 含义 v.push_back()…
动态数组 C++语言定义了第二种new表达式语法.能够分配并初始化一个对象数组.标准库中包括 一个名为allocator的类.同意我们将分配和初始化分离. 12.2.1 new和数组 void fun1() { int *pia=new int[2]; //pia指向第一个int //方括号里的大小必须是整型,但不必是常量 typedef int arrT[42]; //arrT表示42个int的数组类型 int *p=new arrT; //分配一个42个int的数组:p指向第一个int //…
用C语言实现一个动态数组,并对外暴露出对数组的增.删.改.查函数 (可以存储任意类型的元素并实现内存管理) 这里我的编译器就是xcode 分析: 模拟存放 一个 People类 有2个属性 字符串类型:姓名 整型:年龄 array 结构体 应当有 数组长度:length 空间:capacity 存储对象:value(任意类型) 构造一个任意对象类.拥有retainCount属性.为内存计数器 使用一次retainCount+1,当retainCount为0时 释放该对象指向的内存 贴出部分代码…
1.判断读取文档有多少行数据(文档最后的空行不计入其中): 首先在变量定义区域下方和执行语句前声明在程序中要被调用的GetFileN函数: external GetFileN 接下来在函数外部后边写上被调用函数完整代码:(之后就可以在主函数中调用这个子函数了) !---------------------------------------------------------------------------- !自定义函数Function区域- https://www.jianshu.com…
动态数组(Dynamic Array)是指动态分配的.可以根据需求动态增长占用内存的数组.为了实现一个动态数组类的封装,我们需要考虑几个问题:new/delete的使用.内存分配策略.类的四大函数(构造函数.拷贝构造函数.拷贝赋值运算符.析构函数).运算符的重载.涉及到的知识点很多,鉴于本人水平有限,在这里只做简单的介绍. 一.内存分配策略 当用new为一个动态数组申请一块内存时,数组中的元素是连续存储的,例如 vector和string.当向一个动态数组添加元素时,如果没有空间容纳新元素,不可…
12.2 动态数组 12.2.1 new 和数组 1.分配一个动态数组即是在分配一个new对象时在类型名之后加一对方括号,用来存放数组大小,该数可以是任意表达式.也可以是0,只需是整形.无需是常量.数组分配成功后返回一个指向第一个对象的指针. 2.该分配的动态数组并非是数组类型,也就不能调用数组的begin和end函数,更不能使用需要begin函数的范围for语句. 3.我们可以在方括号后面跟一对空括号,来对数组进行值初始化,空括号内不能给出初始化器,从而也就不能用auto来分配数组了(因为au…
目录 数组基础简单回顾 二次封装数组类设计 基本设计 向数组中添加元素 在数组中查询元素和修改元素 数组中的包含.搜索和删除元素 使用泛型使该类更加通用(能够存放 "任意" 数据类型的数据) 升级为动态数组 简单的时间复杂度分析与一些改进 数组基础简单回顾 数组是一种数据结构,用来存储同一类型值的集合. 数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致. 数组是一种引用数据类型. 简单来说,数组就是把需要存储的数据排成一排进行存放. 数组的索引从 0 开始计数,最后一个位置…
[数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习) 在C#中,存在常见的九种集合类型:动态数组ArrayList.列表List.排序列表SortedList.哈希表HashTable.栈Stack.队列Queue.链表LinkedList.字典Dictionary.点列阵BitArray.本文将基于动态数组ArrayList,从源码的角度出发,分析其内部定义以及常用方法的实现. [# 请先阅读注意事项] [注:(1)以下提到的复杂度仅为算法本身,不计入算法之外的部分(如,…