C++ 算法学习与日常编码规范实践总结
一、格式与命名
缩进:统一 4 个空格,禁用Tab,防止跨编辑器排版混乱。
空格与换行:运算符、if/for/while 后加空格;一行不写太长;代码块间用空行隔开。
大括号与语句:不换行,即使单行也加 {},避免修改引入隐性错误。
命名见名知意(全英文):
变量/函数:小驼峰(studentCount、insertNode())
类/结构体:大驼峰(ListNode、SeqList)
常量:全大写+下划线(MAXN、INF)
成员变量加下划线后缀(name_、score_)
杜绝拼音、a1/b2 等无意义命名。
二、注释与可读性
只写关键注释:函数功能、参数说明、算法核心思路(如二分边界、递归终止条件、跨区间统计逻辑)。
标注易错边界:空表、删除头节点、特殊样例处理。
不写"翻译式"废话(如 i++ 旁写"i自增");调试用cerr,提交前删除。
三、变量、类型与函数设计
类型按需选:普通整数用 int;累加/大数统计用long long,杜绝溢出。
定义即初始化:int sum = 0;、指针初始化为 nullptr,释放后置空防野指针。
函数单一职责:一个函数只干一件事,链表/顺序表操作拆为 create/insert/traverse/destroy 等独立函数。
参数传递:只读用 const&(如 void Print(const vector
类封装:成员私有,通过 Get/Set 访问;构造函数用初始化列表;单参数构造函数加 explicit;基类析构函数设为 virtual。
四、内存管理与边界容错
new 配 delete,new[] 配 delete[];写完动态结构必写销毁函数,循环释放节点防泄漏。
访问前检查下标合法性和指针非空。
算法题提速:ios::sync_with_stdio(false); cin.tie(nullptr);,输出用 '\n' 而非 endl。
输入输出严格控制格式:if (i > 0) cout << ' '; 处理间隔,避免多余空格或缺失换行。
复杂度意识:先估算再编码(n=10⁵ 选 O(n log n),n=10⁶ 尽量 O(n));递归过深改迭代。
多组输入记得清空 vector 和状态变量;提交前自测 n=1、全相同、逆序、极值等边界。

浙公网安备 33010602011771号