该仓库用于存储Amirkabir University of Technology 1400-2: Advanced Programming Course的课程作业完成代码。
Homework原始地址:点我
只完成了前 6 个,因为第7个是个 Python 项目。
目前进度及homework简介:
- HW1: 实现一个 Matrix 类以及相关函数。
- HW2: 实现一个模拟加密货币客户端/服务端执行过程的程序。
- HW3: 实现一个 Binary Search Tree (BST)。
- HW4: 实现 C++ 中的 SharedPtr 和 UniquePtr 智能指针。
- HW5: 使用继承和多态实现多个类。
- HW6: 使用 STL 库解决 4 个问题。
本人的开发环境为:Windows
下的VScode
+ Ubuntu
虚拟机
在VScode
中使用插件Remote-SSH
来远程连接自己的虚拟机进行开发。所以,后面说的命令和配置方法均是在Ubuntu环境下的进行的。
在自己的存放目录下执行命令:git clone git@github.com:YouZhiZheng/AUT1400-2.git
比如你在目录example
下执行的这条命令,那么在example
目录下就会多出一个名为AUT1400-2
的目录,这就表示你成功的将此仓库克隆到本地了。
注意: 执行此命令时请确保已经配置好自己GitHub账号中的SSH keys
。
g++
和clang++
都是优秀的C++编译器,根据自己的习惯和喜好随意选择其中一个即可,这里选择clang++
来讲解。
首先执行命令:clang++ --version
查看自己的Ubuntu
是否安装了clang++
编译器。
如果没有安装则依次执行以下命令进行安装:
- 更新包列表:
sudo apt update
- 进行安装:
sudo apt install clang
执行命令查看是否已安装CMake:cmake --version
若未安装,请参考此文章进行安装。
注意: CMake版本不应低于 3.13
Google Test
是C++的一个流行的测试框架,也被称为Google's C++ Testing Framework
,简称为gtest
,可以帮助开发者编写自动化的、可重复的、可维护的测试用例,测试程序的正确性。它是一个开源项目,在GitHub上有详细的介绍文档,点击此处即可访问。
在本项目中,不要求你会使用它(因为测试流程已经编写好了),只需要安装即可。如果你想学习怎么使用gtest
,可参考官方文档。
在你想要的安装目录下依次执行以下命令即可安装gtest
:
$ git clone git@github.com:google/googletest.git
$ cd googletest
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install
以AP1400-2-HW1
为例:
- 进入该目录:
cd ./AP1400-2-HW1
- 阅读该目录下的
README.md
,该文件是题目 - 根据题目完成对应的
hw1.cpp
和hw1.h
文件 - 每完成一个成员函数就应进行测试,不要等全部写完了再进行测试。比如完成了
zeros
函数就去unit_test.cpp
文件中将对应部分取消注释,zeros的测试函数为TEST(HW1Test, ZEROS){......}
- 写好
zeros
函数后,就该编译运行进行测试,在AP1400-2-HW1
目录下依次执行以下命令:
mkdir build
cd build
cmka ..
make
./main
- 当在终端打印
<<SUCCESS>>
则表示测试通过。 - 重复上述过程,直到编写完整个类且成员函数均通过测试,则完成了此homework。
注意: Answer目录下存放的是作者写的每个homework答案(水平有限,难免存在错误,发现错误请联系作者),在实在没有办法完成时再参考!!!
Note:
- HW3中的successor节点指的是前继节点,即左子树的最右节点或父节点。
- HW5的
ingredient.h
中get_name应该为纯虚函数,price
应为非虚函数。 - HW6中在测试的时候请将
unit_test.cpp
中的文件目录换为正确的文件放置目录。