Compare commits

...

2 Commits

Author SHA1 Message Date
flykhan f956e9c5e2 数组类的封装: 添加 makefile 运行测试规则 2023-07-27 15:34:51 +08:00
flykhan 6e18cf2118 数组类的封装 2023-07-27 15:31:47 +08:00
6 changed files with 155 additions and 0 deletions

39
day4/ec1/Makefile Normal file
View File

@ -0,0 +1,39 @@
# 定义路径变量
SRC_DIR = ./
OBJ_DIR = ./
BIN_DIR = ./
# 定义编译器
CC = g++
STD = -std=c++11
# 定义目标文件
TARGET = $(BIN_DIR)/a.out
# 定义源文件
SRCS = $(wildcard $(SRC_DIR)/*.cpp)
# OBJS = $(OBJ_DIR)/lrc.o $(OBJ_DIR)/console.o $(OBJ_DIR)/start_mplayer.o $(OBJ_DIR)/time_delay.o $(OBJ_DIR)/main.o
OBJS = $(patsubst $(SRC_DIR)/%.cpp, $(OBJ_DIR)/%.o, $(SRCS))
# 编译规则
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
$(CC) -c $< -o $@ $(STD)
# 链接规则
$(TARGET): $(OBJS)
$(CC) $^ -o $@ $(STD)
# 默认构建目标
all: $(TARGET)
# 创建目录
$(shell mkdir -p $(OBJ_DIR) $(BIN_DIR))
# 运行测试
run: $(TARGET)
$(TARGET)
# 清理规则
clean:
rm -rf $(OBJ_DIR)/*.o $(TARGET)
# 伪目标
.PHONY: all clean

53
day4/ec1/MyArray.cpp Normal file
View File

@ -0,0 +1,53 @@
#include "MyArray.h"
MyArray::MyArray()
{
this->mCapacity = 100;
this->mSize = 0;
this->pAdress = new int[this->mCapacity]; // 在堆开辟空间
}
// 有参构造函数,用户指定容量初始化
MyArray::MyArray(int capacity)
{
this->mCapacity = capacity;
this->mSize = 0;
this->pAdress = new int[mCapacity]; // 在堆开辟空间
}
// 根据位置添加元素
void MyArray::SetData(int pos, int val)
{
if (pos < 0 || pos > mCapacity - 1)
return; // 位置超出数组范围
pAdress[pos] = val; // 当位置合法时,在该位置传入值 val
}
// 获得指定位置数据
int MyArray::GetData(int pos)
{
return pAdress[pos];
}
// 尾插法
void MyArray::PushBack(int val)
{
if (mSize >= mCapacity)
return;
this->pAdress[mSize] = val;
this->mSize++;
}
// 获得长度
int MyArray::GetLength()
{
return this->mSize;
}
// 析构函数,释放数组空间
MyArray::~MyArray()
{
if (this->pAdress != nullptr)
delete[] this->pAdress;
}

24
day4/ec1/MyArray.h Normal file
View File

@ -0,0 +1,24 @@
// 数组类封装
#ifndef MYARRAY_H
#define MYARRAY_H
class MyArray
{
public:
MyArray(); // 无参构造函数用户没有指定容量则初始化为100
explicit MyArray(int capacity); // 有参构造函数,用户指定容量初始化
~MyArray(); // 析构函数,释放数组空间
public:
void SetData(int pos, int val); // 根据位置添加元素
int GetData(int pos); // 获取指定位置数据
void PushBack(int val); // 尾插法
int GetLength(); // 获得长度
private:
int mCapacity; // 数组一共可容纳多少个元素
int mSize; // 当前有多少个元素
int *pAdress; // 指向存储数据的空间
};
#endif

23
day4/ec1/TestMyArray.cpp Normal file
View File

@ -0,0 +1,23 @@
#include "TestMyArray.h"
#include <iostream>
using namespace std;
void test() // 测试方法
{
MyArray myarray(50); // 创建 50 个容量大小的数组
//数组中插入元素
for (int i = 0; i < 50; i++)
{
// 尾插法
myarray.PushBack(i);
// myarray.SetData(i, i * 2);
}
// 打印数组元素
for (int i = 0; i < myarray.GetLength(); i++)
{
cout << myarray.GetData(i) << " ";
}
cout << endl;
}

8
day4/ec1/TestMyArray.h Normal file
View File

@ -0,0 +1,8 @@
#ifndef __TEST_MY_ARRAY_H__
#define __TEST_MY_ARRAY_H__
#include "MyArray.h"
void test(); // 测试方法
#endif

8
day4/ec1/main.cpp Normal file
View File

@ -0,0 +1,8 @@
#include "TestMyArray.h"
int main()
{
test();
return 0;
}