C++学习笔记之零碎知识点(二)

本文介绍了C++中的文件操作、异常处理、动态内存分配、模板和预处理器等高级主题,帮助读者深入理解C++编程。

1. C++文件和流

C++读取文件需要添加头文件:#include<fstream>

需要使用标准库fstream,它定义了三个新的数据类型:

a.ofstream:输出文件流,用于创建文件冰箱文件写入信息

b.ifstream:输入文件流:用于从文件读取信息

c.fstream:兼有以上两种类型的功能

1.1 文件的打开:open()

1.2 文件的关闭:close()

1.3 写文件:使用流插入符<<向文件写入信息

1.4 读文件:使用流提取运算符>>从文件读取信息,getLine()函数从外部读取一行

1.5 文件指针位置:seekp,seekg函数


2.C++异常处理

需要添加头文件:#include<exception>

try:try块中包含可能抛出异常的代码

catch:用于捕获异常

throw:抛出异常


3. C++内存的动态分配

C++程序中的内存分为两个部分:

栈:在函数内部声明的所有变量都将占用栈内存

堆:程序中未使用的内存,在程序运行时可用于动态分配内存

new运算符:为给定类型的变量在运行时分配堆内的内存,这会返回所分配的空间地址

delete运算符:释放动态分配的内存

对数组空间的释放:delete[] 数组名


4. C++模板

模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码,可以使用模板来定义函数和类

模板函数的定义如下:

template<class type>ret_type func_name(paraments list){
	...
	...
}
关键字class也可以替换为关键字typename

type为函数所使用的数据类型的占位符名称,这个名称可以再函数定义中使用


5. C++预处理器

预处理器是一些指令,指示编译器在实际编译之前所需完成的预处理,所有的预处理都是以#开头的。

#define预处理

宏定义,简单的字符替换,可带参数

#define PI 3.1415926
#define min(a,b) a<b?a:b
条件编译

可以在调试时进行编译,调试开关可以用一个宏实现

#ifndef PI
#define PI 3.1415926
#endif






基于模拟退火的计算器 在线运行 访问run.bcjh.xyz。 先展示下效果 https://pan.quark.cn/s/cc95c98c3760 参见此仓库。 使用方法(本地安装包) 前往Releases · hjenryin/BCJH-Metropolis下载最新 ,解压后输入游戏内校验码即可使用。 配置厨具 已在2.0.0弃用。 直接使用白菜菊花代码,保留高级厨具,新手池厨具可变。 更改迭代次数 如有需要,可以更改 中39行的数字来设置迭代次数。 本地编译 如果在windows平台,需要使用MSBuild编译,并将 改为ANSI编码。 如有条件,强烈建议这种本地运行(运行可加速、可多次重复)。 在 下运行 ,是游戏中的白菜菊花校验码。 编译、运行: - 在根目录新建 文件夹并 至build - - 使用 (linux)(windows) 运行。 最后在命令行就可以得到输出结果了! (注意顺序)(得到厨师-技法,表示对应新手池厨具) 注:linux下不支持多任务选择 云端编译已在2.0.0弃用。 局限性 已知的问题: - 无法得到最优解! 只能得到一个比较好的解,有助于开阔思路。 - 无法选择菜品数量(默认拉满)。 可能有一定门槛。 (这可能有助于防止这类辅助工具的滥用导致分数膨胀? )(你问我为什么不用其他语言写? python一个晚上就写好了,结果因为有涉及json读写很多类型没法推断,jit用不了,算这个太慢了,所以就用c++写了) 工作原理 采用两层模拟退火来最大化总能量。 第一层为三个厨师,其能量用第层模拟退火来估计。 也就是说,这套方法理论上也能算厨神(只要能够在非常快的时间内,算出一个厨神面板的得分),但是加上厨神的食材限制工作量有点大……以后再说吧。 (...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值