高质量C++/C 编程指南

推荐一本书---高质量c++/c编程指南 计算机视觉(模式识别,图像处理)这个行业,从本质上来说,依然属于IT领域。个人认为,一个合格的计算机视觉算法工程师,不仅要熟悉各种常用的视觉分析、模式识别、机器学习算法,更好懂得如何编程来实现这些算法;换而言之,计算机视觉算法工程师 = 算法工程师 + 程序员;一个合格的计算机视觉算法工程师,如果不想从事算法研究工作,而只做编程的工作,应该很容易;但实际上,很多计算机视觉算法工程师写的代码,往往漏 阅读详情
1.2 头文件的结构

【规则1-2-1】为了防止头文件被重复引用,应当用ifndef/define/endif 结构产生预处理块。

【规则1-2-2】用 #include <filename.h> 格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。

【规则1-2-3】用 #include “filename.h” 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。

【建议1-2-1】头文件中只存放“声明”而不存放“定义”

【建议1-2-2】不提倡使用全局变量,尽量不要在头文件中出现象extern int value 这类声明。

2.1 空行

【规则2-1-1】在每个类声明之后、每个函数定义结束之后都要加空行。

【规则2-1-2】在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。

2.2 代码行

【规则2-2-1】一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便于写注释。

【规则2-2-2】if、for、while、do 等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加{}。这样可以防止书写失误。

【建议2-2-1】尽可能在定义变量的同时初始化该变量(就近原则)

2.3 代码行内的空格

【规则2-3-1】关键字之后要留空格。象const、virtual、inline、case 等关键字之后至少要留一个空格,否则无法辨析关键字。象if、for、while 等关键字之后应留
一个空格再跟左括号‘(’,以突出关键字。

【规则2-3-2】函数名之后不要留空格,紧跟左括号‘(’,以与关键字区别。

【规则2-3-3】‘(’向后紧跟,‘)’、‘,’、‘;’向前紧跟,紧跟处不留空格。

【规则2-3-4】‘,’之后要留空格,如Function(x, y, z)。如果‘;’不是一行的结束符号,其后要留空格,如for (initialization; condition; update)。

【规则2-3-5】赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“=”、“+=” “>=”、“<=”、“+”、“*”、“%”、“&&”、“||”、“<<”,“^”等二元操作符的前后应当加空格。

【规则2-3-6】一元操作符如“!”、“~”、“++”、“--”、“&”(地址运算符)等前后不加空格。

【规则2-3-7】象“[]”、“.”、“->”这类操作符前后不加空格。

【建议2-3-1】对于表达式比较长的for 语句和if 语句,为了紧凑起见可以适当地去掉一些空格,如for (i=0; i<10; i++)和if ((a<=b) && (c<=d))

2.4 对齐

【规则2-4-1】程序的分界符‘{’和‘}’应独占一行并且位于同一列,同时与引用它们的语句左对齐。

【规则2-4-2】{ }之内的代码块在‘{’右边数格处左对齐。

2.5 长行拆分

【规则2-5-1】代码行最大长度宜控制在70 至80 个字符以内。代码行不要过长,否则眼睛看不过来,也不便于打印。

【规则2-5-2】长表达式要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要进行适当的缩进,使排版整齐,语句可读。

2.6 修饰符的位置

【规则2-6-1】应当将修饰符 * 和 & 紧靠变量名

2.7 注释

【规则2-7-1】注释是对代码的“提示”,而不是文档。程序中的注释不可喧宾夺主,注释太多了会让人眼花缭乱。注释的花样要少。

【规则2-7-2】如果代码本来就是清楚的,则不必加注释。否则多此一举,令人厌烦。

【规则2-7-3】边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。

【规则2-7-4】注释应当准确、易懂,防止注释有二义性。错误的注释不但无益反而有害。

【规则2-7-5】尽量避免在注释中使用缩写,特别是不常用缩写。

【规则2-7-6】注释的位置应与被描述的代码相邻,可以放在代码的上方或右方,不可放在下方。

【规则2-7-8】当代码比较长,特别是有多重嵌套时,应当在一些段落的结束处加注释,便于阅读。

3.1 共性规则

【规则3-1-1】标识符应当直观且可以拼读,可望文知意,不必进行“解码”。

【规则3-1-2】标识符的长度应当符合“min-length && max-information”原则。

【规则3-1-3】命名规则尽量与所采用的操作系统或开发工具的风格保持一致。

【规则3-1-4】程序中不要出现仅靠大小写区分的相似的标识符。

【建议3-1-1】尽量避免名字中出现数字编号,如Value1,Value2 等,除非逻辑上的确需要编号。这是为了防止程序员偷懒,不肯为命名动脑筋而导致产生无意义的名字(因为用数字编号最省事)。

3.2 简单的Windows 应用程序命名规则

【规则3-2-1】类名和函数名用大写字母开头的单词组合而成。

【规则3-2-2】变量和参数用小写字母开头的单词组合而成。

【规则3-2-3】常量全用大写的字母,用下划线分割单词。

【规则3-2-3】常量全用大写的字母,用下划线分割单词。

【规则3-2-4】静态变量加前缀s_(表示static)。

【规则3-2-5】如果不得已需要全局变量,则使全局变量加前缀g_(表示global)。

【规则3-2-6】类的数据成员加前缀m_(表示member),这样可以避免数据成员与成员函数的参数同名。

【规则3-2-7】为了防止某一软件库中的一些标识符和其它软件库中的冲突,可以为各种标识符加上能反映软件性质的前缀。例如三维图形标准OpenGL 的所有库函数均以gl 开头,所有常量(或宏定义)均以GL 开头。

4.1 运算符的优先级

【规则4-1-1】如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用默认的优先级。

4.2 复合表达式

【规则4-2-1】不要编写太复杂的复合表达式。

【规则4-2-2】不要有多用途的复合表达式。

【规则4-2-3】不要把程序中的复合表达式与“真正的数学表达式”混淆。

4.3 if 语句

【规则4-3-1】不可将布尔变量直接与TRUE、FALSE 或者1、0 进行比较。

【规则4-3-2】应当将整型变量用“==”或“!=”直接与0 比较。

【规则4-3-3】不可将浮点变量用“==”或“!=”与任何数字比较。

【规则4-3-4】应当将指针变量用“==”或“!=”与NULL 比较。

4.4 循环语句的效率

【建议4-4-1】在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU 跨切循环层的次数。

【建议4-4-2】如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面

4.5 for 语句的循环控制变量

【规则4-5-1】不可在for 循环体内修改循环变量,防止for 循环失去控制。

【建议4-5-1】建议for 语句的循环控制变量的取值采用“半开半闭区间”写法。

4.6 switch 语句

【规则4-6-1】每个case 语句的结尾不要忘了加break,否则将导致多个分支重叠(除非有意使多个分支重叠)。

【规则4-6-2】不要忘记最后那个default 分支。即使程序真的不需要default 处理,也应该保留语句 default : break; 这样做并非多此一举,而是为了防止别人误以为你忘了default 处理。

5.1 为什么需要常量

【规则5-1-1】 尽量使用含义直观的常量来表示那些将在程序中多次出现的数字或字符串。

5.2 const 与 #define 的比较

【规则5-2-1】在C++ 程序中只使用const 常量而不使用宏常量,即const 常量完全取代宏常量。

5.3 常量定义规则

【规则5-3-1】需要对外公开的常量放在头文件中,不需要对外公开的常量放在定义文件的头部。为便于管理,可以把不同模块的常量集中存放在一个公共的头文件中。

【规则5-3-2】如果某一常量与其它常量密切相关,应在定义中包含这种关系,而不应给出一些孤立的值。

6.1 参数的规则

【规则6-1-1】参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字。如果函数没有参数,则用void 填充。

【规则6-1-2】参数命名要恰当,顺序要合理。

【规则6-1-3】如果参数是指针,且仅作输入用,则应在类型前加const,以防止该指针在函数体内被意外修改。例如:void StringCopy(char *strDestination,const char *strSource);

【规则6-1-4】如果输入参数以值传递的方式传递对象,则宜改用“const &”方式来传递,这样可以省去临时对象的构造和析构过程,从而提高效率。

【建议6-1-1】避免函数有太多的参数,参数个数尽量控制在5 个以内。如果参数太多,在使用时容易将参数类型或顺序搞错。

【建议6-1-2】尽量不要使用类型和数目不确定的参数。C 标准库函数printf 是采用不确定参数的典型代表,其原型为:int printf(const chat *format[, argument]...); 这种风格的函数在编译时丧失了严格的类型安全检查。

6.2 返回值的规则

【规则6-2-1】不要省略返回值的类型。

【规则6-2-2】函数名字与返回值类型在语义上不可冲突。

【规则6-2-3】不要将正常值和错误标志混在一起返回。正常值用输出参数获得,而错误标志用return 语句返回。

【建议6-2-1】有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,可以附加返回值。

【建议6-2-2】如果函数的返回值是一个对象,有些场合用“引用传递”替换“值传递”可以提高效率。而有些场合只能用“值传递”而不能用“引用传递”,否则会出错。

6.3 函数内部实现的规则

【规则6-3-1】在函数体的“入口处”,对参数的有效性进行检查。

【规则6-3-2】在函数体的“出口处”,对return 语句的正确性和效率进行检查。

6.4 其它建议

【建议6-4-1】函数的功能要单一,不要设计多用途的函数。

【建议6-4-2】函数体的规模要小,尽量控制在50 行代码之内。

【建议6-4-3】尽量避免函数带有“记忆”功能。相同的输入应当产生相同的输出。建议尽量少用static 局部变量,除非必需。

【建议6-4-4】不仅要检查输入参数的有效性,还要检查通过其它途径进入函数体内的变量的有效性,例如全局变量、文件句柄等。

【建议6-4-5】用于出错处理的返回值一定要清楚,让使用者不容易忽视或误解错误情况。

6.5 使用断言

【规则6-5-1】使用断言捕捉不应该发生的非法情况。不要混淆非法情况与错误情况之间的区别,后者是必然存在的并且是一定要作出处理的。

【规则6-5-2】在函数的入口处,使用断言检查参数的有效性(合法性)。

【建议6-5-1】在编写函数时,要进行反复的考查,并且自问:“我打算做哪些假定?”一旦确定了的假定,就要使用断言对假定进行检查。

【建议6-5-2】一般教科书都鼓励程序员们进行防错设计,但要记住这种编程风格可能会隐瞒错误。当进行防错设计时,如果“不可能发生”的事情的确发生了,则要使用断言进行报警。

7.2 常见的内存错误及其对策

【规则7-2-1】用malloc 或new 申请内存之后,应该立即检查指针值是否为NULL。防止使用指针值为NULL 的内存。

【规则7-2-2】不要忘记为数组和动态内存赋初值。防止将未被初始化的内存作为右值使用。

【规则7-2-3】避免数组或指针的下标越界,特别要当心发生“多1”或者“少1”操作。

【规则7-2-4】动态内存的申请与释放必须配对,防止内存泄漏。

【规则7-2-5】用free 或delete 释放了内存之后,立即将指针设置为NULL,防止产生“野指针”。

8.3 参数的缺省值

【规则8-3-1】参数缺省值只能出现在函数的声明中,而不能出现在定义体中。

【规则8-3-2】如果函数有多个参数,参数只能从后向前挨个儿缺省,否则将导致函数调用语句怪模怪样。

10.1 继承

【规则10-1-1】如果类A 和类B 毫不相关,不可以为了使B 的功能更多些而让B继承A 的功能和属性。不要觉得“白吃白不吃”,让一个好端端的健壮青年无缘无故地吃人参补身体。

【规则10-1-2】若在逻辑上B 是A 的“一种”(a kind of ),则允许B 继承A 的功能和属性。例如男人(Man)是人(Human)的一种,男孩(Boy)是男人的一种。那么类Man 可以从类Human 派生,类Boy 可以从类Man 派生。严格的继承规则应当是:若在逻辑上B 是A 的“一种”,并且A 的所有功能和属性对B 而言都有意义,则允许B 继承A 的功能和属性。

10.2 组合

【规则10-2-1】若在逻辑上A 是B 的“一部分”(a part of),则不允许B 从A 派生,而是要用A 和其它东西组合出B。

11.2 提高程序的效率

【规则11-2-1】不要一味地追求程序的效率,应当在满足正确性、可靠性、健壮性、可读性等质量因素的前提下,设法提高程序的效率。

【规则11-2-2】以提高程序的全局效率为主,提高局部效率为辅。

【规则11-2-3】在优化程序的效率时,应当先找出限制效率的“瓶颈”,不要在无关紧要之处优化。

【规则11-2-4】先优化数据结构和算法,再优化执行代码。

【规则11-2-5】有时候时间效率和空间效率可能对立,此时应当分析那个更重要,作出适当的折衷。例如多花费一些内存来提高性能。

【规则11-2-6】不要追求紧凑的代码,因为紧凑的代码并不能产生高效的机器码。

【建议11-3-1】当心那些视觉上不易分辨的操作符发生书写错误。我们经常会把“==”误写成“=”,象“||”、“&&”、“<=”、“>=”这类符号也很容易发生“丢1”失误。然而编译器却不一定能自动指出这类错误。

【建议11-3-2】变量(指针、数组)被创建之后应当及时把它们初始化,以防止把未被初始化的变量当成右值使用。

【建议11-3-3】当心变量的初值、缺省值错误,或者精度不够。

【建议11-3-4】当心数据类型转换发生错误。尽量使用显式的数据类型转换(让人们知道发生了什么事),避免让编译器轻悄悄地进行隐式的数据类型转换。

【建议11-3-5】当心变量发生上溢或下溢,数组的下标越界。

【建议11-3-6】当心忘记编写错误处理程序,当心错误处理程序本身有误。

【建议11-3-7】当心文件I/O 有错误。

【建议11-3-8】避免编写技巧性很高代码。

【建议11-3-9】不要设计面面俱到、非常灵活的数据结构。

【建议11-3-10】如果原有的代码质量比较好,尽量复用它。但是不要修补很差劲的代码,应当重新编写。

【建议11-3-11】尽量使用标准库函数,不要“发明”已经存在的库函数。

【建议11-3-12】尽量不要使用与具体硬件或软件环境关系密切的变量。

【建议11-3-13】把编译器的选择项设置为最严格状态。

【建议11-3-14】如果可能的话,使用PC-Lint、LogiScope 等工具进行代码审查。
[最后修改由 rik, 于 2005-05-14 14:34:35]
关于《高质量C++/C编程指南》 这本书是林锐博士写于2001年7月,现在都2012年了,相隔10年多, 用了两天时间看完这个100页的书,里面几乎没有废话,全是精炼的总结性的东西, 思路顺畅,语言流畅,看起来不费劲。 一共11章,其中1-6章的内容,和我自己的习惯是一致的,看此书之前已经是我的习惯了, 看了之后更加印证了正确性。 第7章,内存管理,我认为这一章是正本书中最精华的部分,是给我帮助最大的一部分。 8-11章对我的启发介于前两者之间。 以下是我觉得比较重要,或者说容易忘记的几条(因为可能不常用),列出来以备以后查阅, 阅读详情

相关推荐

《高质量C++/C编程指南》读书笔记与实践

函数指针是指向函数的指针变量,它保存了一个函数的地址。使用函数指针可以在运行时选择要执行的函数,提供了额外的灵活性和动态性。// 声明一个指向函数的指针,并初始化为function的地址funcPtr();// 通过函数指针调用functionreturn 0;在这个例子中,我们定义了一个名为function的普通函数,然后声明了一个函数指针funcPtr,将function的地址赋值给该函数指针。通过函数指针调用函数就像是直接调用函数一样。

weixin_42611177的博客 986

高质量C++/C编程指南

1 文件结构 每个C++/C程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称为头文件。另一个文件用于保存程序的实现(implementation),称为定义(definition)文件。C++/C程序的头文件以“.h”为后缀,C程序的定义文件以“.c”为后缀,C++程序的定义文件通常以“.cpp”为后缀。 头文件的结构与作用 头文件主要有两个作用: 通过头...

aodia2015的博客 1001

林锐博士的《高质量 C++/C 编程指南》

林锐博士的《高质量 C++/C 编程指南》

高质量C/C++编程指南

本文档参考《高质量C++ C编程指南》及自己的心得编写,如有侵权,立刻删除!定义文件有三部分内容:(1)定义文件开头处的版权和版本声明;(2)对一些头文件的使用;(3)程序的实现体(包括数据和代码)假设定义文件的名称为header.cpp,定义文件的结构参见如下://版权和版本说明见2.1.1,此处省略#include "header.h" //引用头文件...//全局函数的实现体...//类成员函数的实现体...

weixin_72852519的博客 3534

别再傻傻分不清了!STM32定时器里Prescaler和ClockDivision到底有啥区别?

本文深入解析STM32定时器中Prescaler和ClockDivision的区别与应用场景。Prescaler作为定时器的'心跳调节器',决定计数频率;而ClockDivision则是输入捕获的'抗噪滤镜',有效抑制高频噪声。通过实战案例和示波器实测数据,帮助开发者避免常见配置误区,提升嵌入式系统稳定性。

weixin_29193259的博客 319

永不消逝的电波 -GSM空口信号的接收与解码

一开始接触软件无线电应该是从很早之前对RFID洗衣卡的解密开始的,后来接触人员定位,慢慢的打开了这样一扇大门。。。。 翻到之前做的GSM信号的接收解码,今天就对其过程做一个记录,也不是什么新颖的内容,权当是记录和回忆了。 对于GSM网络的相关内容,不是非常的熟悉,如有不正确的,欢迎批评指正。

Jack.Xu 专栏 1万+

万字长文【C++】高质量编程指南

内联函数,编译器在符号表里放入函数的声明,包括名字,参数类型和返回值类型,如果编译器没有发现内联函数存在错误,那么该函数的代码也被放入符号表里,在调用一个内联函数时,编译器首先检查调用是否正确,进行类型安全检查,或者进行自动类型转换,如果正确,内联函数的代码就会直接替换函数的调用,于是省去了函数调用的开销。编译器总是要为函数的每个参数制作临时副本,指针参数p的副本是 _p,编译器 使 _p =p,如果函数体内的程序修改了 _p的内容,就导致参数p的内容作相应的修改,这就是指针可以作为输出参数的原因。

Ljq0704的博客 1555

基于YOLOv5与海康工业相机的高分辨率实时检测实践

本文详细介绍了基于YOLOv5与海康工业相机的高分辨率实时检测实践,通过优化相机配置、网络传输和YOLOv5模型适配,实现了每秒15帧以上的实时检测性能,缺陷识别准确率高达99.2%。特别适用于电子元件焊接点检测、精密齿轮齿痕检查等对微小缺陷敏感的场景。

weixin_30872499的博客 474

【免费下载】 林锐博士的《高质量 C++/C 编程指南》资源下载

林锐博士的《高质量 C++/C 编程指南》资源下载 【下载地址】高质量C_C编程指南.pdf 本仓库提供林锐博士的经典著作《高质量 C++/C 编程指南》的资源下载。该书是C++/C编程领域的权威指南,旨在帮助开发者编写高质量、可维护的代码 ...

gitblog_06683的博客 2852

5分钟搞定:用Pyannote和Whisper实现带说话人分离的语音转文字(附完整代码)

本文详细介绍了如何快速构建一个集成了说话人分离功能的语音转文字系统。通过结合OpenAI的Whisper模型进行高精度语音识别和Pyannote模型实现说话人分离,并提供了完整的代码实现、环境搭建指南以及核心的对齐与合并逻辑,帮助开发者高效处理会议录音、访谈等多说话人音频,实现自动化转录。

threejs5artist的博客 635

树莓派计算模块摄像头连接与配置全攻略:从硬件跳线到软件驱动

在嵌入式视觉项目中,摄像头模组的连接与驱动是图像采集和视频分析的基础。其核心原理是通过CSI-2高速串行接口协议传输图像数据,并依赖I2C总线进行传感器寄存器配置。这一技术方案的价值在于为工业控制、机器人等嵌入式设备提供了稳定、高性价比的视觉感知能力。在实际应用中,开发者常面临摄像头无法识别、I2C通信失败等挑战,尤其是在使用树莓派计算模块时,其硬件接口需要通过I/O板引出,配置过程涉及设备树参数调整等关键步骤。本文聚焦于解决这些实际问题,详细拆解了从硬件连接到软件驱动的完整流程,特别是针对CM4、CM3+

weixin_29184075的博客 334

【亲测免费】 《高质量 C++/C 编程指南》:编程艺术的权威指南

《高质量 C++/C 编程指南》:编程艺术的权威指南 【下载地址】高质量C_C编程指南.pdf 本仓库提供林锐博士的经典著作《高质量 C++/C 编程指南》的资源下载。该书是C++/C编程领域的权威指南,旨在帮助开发者编写高质量、可维护的代码 ...

gitblog_06689的博客 819

【FF-A】第二章 Introduction

Armv8.4 架构引入了在安全状态下的虚拟化扩展。Arm® SMMU v3.2 架构[1]为安全流添加了对第2阶段翻译的支持,以补充在 Armv8.4 处理器状态下的安全 EL2 翻译制度。这些架构特性使得在安全状态下,彼此不信任的软件组件能够相互隔离。关于在安全状态下引入虚拟化扩展以及固件框架目标的更多理念可在名为《在安全世界使用虚拟化进行隔离》的白皮书[3]中找到。软件组件只能访问物理地址空间和系统资源的区域,例如 GIC 中对其正确运行必要的中断。

baron-周贺贺-代码改变世界ctw 528

高质量C++/C编程指南资源介绍:全面提升编程技能

高质量C++/C编程指南资源介绍:全面提升编程技能 去发现同类优质开源项目:https://gitcode.com/ 在软件开发领域,C++/C 语言因其高效性和灵活性强占有一席之地。今天,我们将为您推荐一款开源项目——高质量C++/C编程指南资源,这是一份宝藏级编程指南,助您在编程之路上更进一步。 项目介绍 《高质量C++/C编程指南.pdf》是一份全面而详尽的编程资源,专为提升开发者编程技能而...

gitblog_06712的博客 1057

上位机图像处理和嵌入式模块部署(开篇)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 图像处理是现实生活当中很实用的一门技术。工业上一般采用的是机器视觉,以传统算法和光源控制为主,部分采用了深度学习技术。而生活当中,则主要以二维码识别、人脸识别、车牌识别和ocr识别为主,这中间深度学习与AI扮演了很重要的角色。过去,市场上的商业收费软件,主要还是以传统设备厂商提供的上位机软件为主,那这一部分是不是结合最新的npu技术,应该做出一些新的东西出来呢?

嵌入式-老费,一个分享专业嵌入式知识的blog 1334

【云原生技术】helm中Chart.yaml、values.yaml、_helpers.tpl 各自的写法与作用

Chart.yaml、values.yaml、_helpers.tpl 各自的写法与作用 在一个标准的 Helm Chart 中,通常会包含以下关键文件: - **Chart.yaml** - **values.yaml** - **templates/`_helpers.tpl`** - 以及若干模板文件(`deployment.yaml`、`service.yaml` 等) 下面分别介绍这几个文件的作用、常见字段及其含义。

weixin_46453070的博客 751

《高质量C++/C编程指南》读书笔记之一

《高质量C++/C编程指南》------作者林锐博士 作者在前言中所讲的关于编程老手与编程高手以及结合自己的经历,给我们讲述了关于编程质量的重要性以及必须对于其质量的重视。 1.知错就改。 2.经常温故而知新。 3.坚持学习,天天向上。 从这里面抽取精华,对其加以整理,形成自己的笔记,在后面的学习过程中可以加以巩固。 ——————————————————————————————————

hgj125073的专栏 1024

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

学习笔记之高质量C++/C编程指南

高质量C++/C编程指南 http://man.lupaworld.com/content/develop/c&c++/c/c.htm 高质量C++/C编程指南(附录 C :C++/C 试题的答案与评分标准) http://www.warting.com/program/201111/38402.html http://www.360doc.com/content/10...

weixin_34221112的博客 441

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

高质量C++/C编程指南资源介绍

高质量C++/C编程指南资源介绍 去发现同类优质开源项目:https://gitcode.com/ 欢迎来到本仓库,这里提供了《高质量C++/C编程指南.pdf》的下载资源。这是一份详尽的编程指南,旨在帮助开发者提升编程技能,编写出高质量的C++/C代码。 内容概述 本指南包括但不限于以下内容: 前言:简要介绍本书的编写目的、适用对象以及阅读建议。 文件结构:详细解释了代码文件的结构以及如何高效...

gitblog_06722的博客 356

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

写好C/C++代码,大学生必读:林锐博士的《高质量 C++/C 编程指南》

作为一名大学生,我深知在学习编程的过程中,写出高质量的代码是多么重要。最近,我读了林锐博士的《高质量 C++/C 编程指南》,这本书让我受益匪浅,今天想和大家分享一下我的学习心得。

晚风的博客 1364

高质量 C++/C 编程指南

高质量 C++/C 编程指南 文件标识: 文件状态 [ ] 草稿文件 [√]正式文件 [ ] 更改正式文件 当前版本: 1.0 作 者: 林锐 博士 完成日期: 2001 年7 月24 日   高质量 C++/C编程指南, v 1.0 2001 Page 2 of 101 版 本 历 史     版本/状态 作者 参...

靑い空゛ 1267
上一篇: 基于NDIS的网络数据包截获后各个字节意义分析
下一篇: 数据类型转换示例
goingup
博客等级 码龄22年 52粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值