首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Google C++ 编程风格指南(五):其他 C++ 特性

有时这样的修改并不是我们所想要的, 甚至是不可取的, 尤其是在一个已经广泛使用的或者成熟的代码. RTTI 在某些单元测试中非常有用....结论: RTTI 有合理的用途但是容易被滥用, 因此在使用时请务必注意. 在单元测试可以使用 RTTI, 但是在其他代码请尽量避免. 尤其是在新代码, 使用 RTTI 前务必三思....前置自增和自减 对于迭代器和其他模板对象使用前缀形式 (++i) 的自增, 自减运算符....缺点: 在 C 开发, 当表达式的值未被使用时, 传统的做法是使用后置自增, 特别是在 for 循环中....在 C 整型, 只使用 int. 在合适的情况下, 推荐使用标准类型 size_t 和 ptrdiff_t. 如果已知整数不会太大, 我们常常会使用 int, 循环计数.

1.1K30

C++特性使用建议

在C 语言中,如果函数需要修改变量的值,参数必须为指针,int foo(int *pval),在 C++ ,函数还可以声明引用参数int foo(int &val),定义引用参数防止出现 (*pval...结论: RTTI 有合理的用途但是容易被滥用,因此在使用时请务必注意。在单元测试可以使用 RTTI,但是在其他代码请尽量避免。尤其是在新代码使用 RTTI 前务必三思。...如今 constexpr 就可以定义浮点式的真・常量,不用再依赖字面值了;也可以定义用户自定义类型上的常量;甚至也可以定义函数调用所返回的常量。 14.整型 C++ 内建整型,仅使用 int。...如果程序需要不同大小的变量,可以使用 中长度精确的整型,int16_t。如果您的变量可能不小于 2^31,就用 64 位变量比如int64_t。...因此如果使用常量的格式化字符串,需要将宏的值而不是宏名插入格式使用 PRI* 宏同样可以在 % 后包含长度指示符。

1.9K30
您找到你想要的搜索结果了吗?
是的
没有找到

C++ 特性使用建议

结论: RTTI 有合理的用途但是容易被滥用,因此在使用时请务必注意。在单元测试可以使用 RTTI,但是在其他代码请尽量避免。尤其是在新代码使用 RTTI 前务必三思。...14.整型 C++ 内建整型,仅使用 int。如果程序需要不同大小的变量,可以使用 中长度精确的整型, int16_t。...因此如果使用常量的格式化字符串,需要将宏的值而不是宏名插入格式使用 PRI* 宏同样可以在 % 后包含长度指示符。...Boost库集是一个广受欢迎,经过同行鉴定,免费开源的C++优秀库集。 优点:Boost代码质量普遍较高,可移植性好,填补了 C++ 标准库很多空白,型别的特性,更完善的绑定器,更好的智能指针。...结论:为了向阅读和维护代码的人员提供更好的可读性,建议使用 Boost成熟的特性子集,boost/heap、 boost/math/distributions、boost/container/flat_map

1.6K20

程序员工作三年想涨薪,却因为小细节没注意,被直接开除!

分隔 宏定义如果包含表达式或变量,表达式或变量必须用小括号括起来。...对于类型常量 对于局限于某编译单元(实现文件)的常量,以字符k开头,例如kAnimationDuration,且需要以static const修饰 对于定义于类头文件的常量,外部可见,则以定义该常量所在类的类名开头... 使用did和will通知Delegate已经发生的变化或将要发生的变化。...new作为前缀 不要使用and来连接属性参数,如果方法描述两种独立的行为,使用and来串接它们。...一般方法不使用前缀命名,私有方法可以使用统一的前缀来分组和辨识 方法名要与对应的参数名保持高度一致 表示对象行为的方法、执行性的方法应该以动词开头 返回性的方法应该以返回的内容开头,但之前不要加get,

63480

【愚公系列】软考中级-软件设计师 013-程序设计语言基础知识(语言处理程序基础)

例如,对于输入的源代码的字符串int a = 10;,词法分析器可能会生成如下的词法单元序列:词法单元:int,标记:关键字词法单元:a,标记:标识符词法单元:=,标记:运算符词法单元:10,标记:常量词法单元...自动向量化:编译器可以自动识别适合使用SIMD指令的代码片段,并将其向量化。向量化可以将多个操作合并为一个,以提高计算效率。☀️2.1.6 表达式前缀表达式:操作符位于操作数之前的表达式。...例如,将中缀表达式 "2 + 3" 转换为前缀表达式可以得到 "+ 2 3"。中缀表达式:操作符位于操作数之间的表达式。例如,"2 + 3" 就是一个中缀表达式。...在计算机,通常使用后缀表达式进行数学计算,因为后缀表达式具有优先级,可以直接按照顺序进行计算,而无需考虑括号和优先级的问题。而前缀和中缀表达式则需要使用括号和优先级规则来确定计算顺序。...正则闭包还可以用于实现词法分析的词法规则,识别标识符、常量等。正则闭包的原理是通过使用特殊的符号和操作来表示字符重复出现的模式。通常,正则表达式的闭包操作符表示将一个或多个字符重复任意次数。

22021

C语言入门系列之2.数据类型、运算符和表达式

它们可与数据类型结合起来分类,例如,可分为整型常量、整型变量、浮点常量、浮点变量、字符常量、字符变量、枚举常量、枚举变量。 在程序常量是可以不经说明而直接引用的,而变量则必项先定义后使用。...使用符号常量的好处: 含义清楚; 能做到”一改全改“。 变量 其值可以改变的量称为变量。一个变量应该有一个名字,在内存占据一定的存储单元。...3.整型数据 整型常量的表示方法 整型常量就是整常数。 在C语言中,使用的整常数有八进制、十六进制和十进制三种: 十进制整常数 十进制整常数没有前缀,其数码为0-9。...在程序是根据前缀来区分各种进制数的,在书写常数时不要把前缀弄错造成结果不正确。 整型常数的后缀: 在16位字长的机器上,基本整型的长度也为16位,因此表示的数的范围也是有限定的。...字符值是以ASCII码的形式存放在变量的内存单元之中的,x的十进制ASCII码是120,y的十进制ASCII码是121。

2.1K10

代码整洁之道-读书笔记之有意义的命名

下列代码的目的何在?...里面并没有复杂的表达式。空格和缩进中规中矩。只用到三个变量和两个常量。甚至没有涉及任何其他类或多态方法,只是(或者看起来是)一个数组的列表而已。...(4)我怎么使用返回的列表?问题的答案没体现在代码段,可那就是它们该在的地方。...运算符和常量的数量全然保持不变,嵌套数量也全然保持不变。但代码变得明确多了。还可以更进一步,不用int数组表示单元格,而是另写一个类。...命名一定要有意义,否则就会使代码变糟糕1.5 使用读得出来的名称不要自己造词,要使用英语单词或者短语1.6 使用可搜索的名称试图消除魔法值,将魔法值提取到常量常量起名一定要见明知意1.7 避免使用编码编码已经太多

498100

编程5分钟,命名2小时!聊聊命名规则!

里面并没有复杂的表达式,空格和缩进中规中矩,只用到三个变量和两个常量,甚至没有涉及任何其他类或多态方法,只是(或者看起来是)一个数组的列表而已。...运算符和常量的数量全然保持不变,嵌套数量也全然保持不变,但代码变得明确多了。 还可以更进一步,不用int数组表示单元格,而是另写一个类。...05 使用可搜索的名称 对于单字母名称和数字常量,有一个问题,就是很难在一大篇文字找出来。...找MAX_CLASSES_PER_STUDENT很容易,但想找数字7就麻烦了,它可能是某些文件名或其他常量定义的一部分,出现在因不同意图而采用的各种表达式。...窃以为单字母名称仅用于短方法的本地变量。名称长短应与其作用域大小相对应 [N5]。若变量或常量可能在代码多处使用,则应赋予其便于搜索的名称。

88520

编程5分钟,命名2小时!

里面并没有复杂的表达式,空格和缩进中规中矩,只用到三个变量和两个常量,甚至没有涉及任何其他类或多态方法,只是(或者看起来是)一个数组的列表而已。...运算符和常量的数量全然保持不变,嵌套数量也全然保持不变,但代码变得明确多了。 还可以更进一步,不用int数组表示单元格,而是另写一个类。...05 使用可搜索的名称 对于单字母名称和数字常量,有一个问题,就是很难在一大篇文字找出来。...找MAX_CLASSES_PER_STUDENT很容易,但想找数字7就麻烦了,它可能是某些文件名或其他常量定义的一部分,出现在因不同意图而采用的各种表达式。...窃以为单字母名称仅用于短方法的本地变量。名称长短应与其作用域大小相对应 [N5]。若变量或常量可能在代码多处使用,则应赋予其便于搜索的名称。

52420

编程5分钟,命名2小时!聊聊命名规则!

里面并没有复杂的表达式,空格和缩进中规中矩,只用到三个变量和两个常量,甚至没有涉及任何其他类或多态方法,只是(或者看起来是)一个数组的列表而已。...运算符和常量的数量全然保持不变,嵌套数量也全然保持不变,但代码变得明确多了。 还可以更进一步,不用int数组表示单元格,而是另写一个类。...05 使用可搜索的名称 对于单字母名称和数字常量,有一个问题,就是很难在一大篇文字找出来。...找MAX_CLASSES_PER_STUDENT很容易,但想找数字7就麻烦了,它可能是某些文件名或其他常量定义的一部分,出现在因不同意图而采用的各种表达式。...窃以为单字母名称仅用于短方法的本地变量。名称长短应与其作用域大小相对应 [N5]。若变量或常量可能在代码多处使用,则应赋予其便于搜索的名称。

45130

一起学Elasticsearch系列-模糊搜索

前缀匹配:prefix 前缀匹配通过指定一个前缀值,搜索并匹配索引中指定字段的文档,找出那些以该前缀开头的结果。 在 Elasticsearch ,可以使用 prefix 查询来执行前缀搜索。...正则表达式匹配:regexp 正则表达式匹配(regexp)是一种基于正则表达式模式进行匹配的搜索方法,它允许使用正则表达式来匹配文档的字段值。...为了提高性能,应避免使用通配符模式, . 或 .?+ 未经前缀或后缀。 flags 正则表达式匹配的 flags 参数用于指定正则表达式的匹配选项。...max_expansions:限制匹配的最大词项,有点类似SQL的limit,默认值是50。 boost:用于设置该查询的权重。...以下是一个示例来说明如何在 Elasticsearch 中使用 ngram 和 edge ngram 分词器: PUT /my_index { "settings": { "analysis

38310

第四章.汇编语言程序格式

有些指令还可以在指令助记符的前面加上前缀,实现一定的附加操作。串操作指令前所加的重复前缀REP(见第7章介绍)等。 3.操作数字段 一条指令可以有一个操作数、两个操作数或者无操作数。...CPU各寄存器名(AX、CS等), 指令助记符(MOV、ADD), 伪指令符(SEGMENT、DB)、表达式的运算符(GE、EQ)以及属性操作符(PTR、OFFSET等) 4.2汇编语言数据...关系运算符比较的两个表达式必须同为常数或同一逻辑段的变量。 如果是常量的比较,则按无符号数进行比较;如果是变量的比较,则比较它们的偏移量的大小。...1、DS和ES的装入 在程序使用数据传送语句来实现对DS和ES的装入。 为了改正上述程序的错误,可以在变量DBYTE2前加一个段前缀说明即可。...一、使用程序段前缀PSP(Program Segment Prefix)实现返回 DOS系统将一个.EXE文件(可执行文件)装入内存时,在该文件的前面生成一个程序段前缀PSP,其长度为100H字节。

53151

ElasticSearch权威指南:深入搜索(下)

3.通配符与正则表达式查询 与 prefix 前缀查询的特性类似, wildcard 通配符查询也是一种底层基于词的查询, 与前缀查询不同的是它允许指定匹配的正则式。...数据在索引时的预处理有助于提高前缀匹配的效率,而通配符和正则表达式查询只能在查询时完成,尽管这些查询有其应用场景,但使用仍需谨慎。...4.查询时输入即搜索 把邮编的事情先放一边,让我们先看看前缀查询是如何在全文查询起作用的。...} } } 但是只有查询字符串的最后一个词才能当作前缀使用。 在之前的 前缀查询 ,我们警告过使用前缀的风险,即 prefix 查询存在严重的资源消耗问题,短语查询的这种方式也同样如此。...查询时权重提升 在 语句优先级(Prioritizing Clauses) ,我们解释过如何在搜索时使用 boost 参数让一个查询语句比其他语句更重要。

2.5K22

Dart In Action -Dar的基本数据类型(一)

num类型包括基本运算符,+, - ,/和*,也是你可以找到abs(),ceil()和floor()以及其他方法的地方。 (按位运算符,>>,在int类中有定义。)...许多算术表达式也是编译时常量,只要它们的操作数是编译为数字的编译时常量。(注:这是说如果一个表达式涉及到的变量也是编译时常量,那么表达式也是编译时常量。)..."; 您可以使用${expression}将表达式的值放在字符串。 如果表达式是标识符,则可以跳过{}。 要获取对应于对象的字符串,Dart调用对象的toString()方法。...如果两个字符串包含相同的代码单元序列,则它们是等效的。...'; 有关如何在字符串中表示Unicode字符的详细信息,请参阅Runes。 文字字符串是编译时常量,只要任何插值表达式是一个编译时常量,其值为null或数值,字符串或布尔值。

2.4K20

Elasticsearch探索:部分匹配

您可以使用index_prefixes映射参数来加速前缀查询。 如果启用,Elasticsearch会在一个单独的字段索引2到5个字符之间的前缀。...正则表达式是一种使用 placeholder(称为运算符)匹配数据的模式的方法。 有关regexp查询支持的运算符的列表,请参阅 Regular expression syntax。...regexp允许使用正则表达式进行term查询.注意regexp如果使用不正确,会给服务器带来很严重的性能压力。比如.*开头的查询,将会匹配所有的倒排索引的关键字,这几乎相当于全表扫描,会很慢。...因此如果可以的话,最好在使用正则前,加上匹配的前缀。在正则如果使用.*?或者+都会降低查询的性能。...可能以避免使用前导通配符的方式对数据建立索引 通常,正则表达式可能会很昂贵 如果您确实需要匹配 token 的末尾,只需使用 reverse 过滤器为它们建立索引。下面,我们用一个具体的例子来实现。

2.1K41

C Primer Plus(二)

strlen() 函数定义在 string.h 头文件,该文件包含许多与字符串相关操作的函数,字符串拷贝和查找等函数。...C 头文件 limits.h 和 float.h 分别提供了与整数和浮点类型大小限制的详细信息,每个头文件都定义了一系列明示常量 limits.h 定义了如下代码: #define INT_MAX...+32767 #define INT_MIN -32768 同样的,float.h 也定义了一些明示常量 FLT_DIG 和 DBL_DIG 分别表示 float 类型和 double 类型的有效数字...= 注意: 如果递增递减运算符使用前缀形式和后缀形式会对代码产生不同的影响,那么最为明智的是不要那样使用它们,: // 如果使用i++,会得到不同的结果 b = ++i; // 应该使用如下语句...类型转换 通常,在语句和表达式使用类型相同的变量和常量。但是,如果使用混合类型,C 采用一套规则进行自动类型转换。

54030

简单C++单元测试框架(支持一键切到GTest或Boost.Test)

简介 众所周知,单元测试对于持续集成和变更的检测是十分重要的。 这个单元测试框架本是用于之前规划的C++协程框架使用的。...虽然已经有比较成熟的单元测试框架GTest、Boost.Test等等,但是要引入它们都会倒入很多文件。...另外有一点需要注意的是,在Check宏的实现过程只能有一次出现表达式求值的地方,不然表达式就会执行多次,这样会导致行为异常的 因为表达式只能出现一次,所以暂时没有做临时的数据存储,就不会像GTest那样写出...自此,一个简易地单元测试框架就完成了,再加上一些终端颜色的控制,就基本OK了。 但是也是因为只是一个简单的框架,所以暂时不支持多线程,不支持在Windows命令提示符带颜色显示。...boost这个比较麻烦,因为boost的接口方式不一样,甚至在使用静态库的时候有自己的入口函数 简单地说就是分支比较多 在入口处要判断是静态库还是动态库,有没有使用boost.test内置的函数(详见

49930

简单C++单元测试框架(支持一键切到GTest或Boost.Test)

简介 众所周知,单元测试对于持续集成和变更的检测是十分重要的。 这个单元测试框架本是用于之前规划的C++协程框架使用的。...虽然已经有比较成熟的单元测试框架GTest、Boost.Test等等,但是要引入它们都会倒入很多文件。...另外有一点需要注意的是,在Check宏的实现过程只能有一次出现表达式求值的地方,不然表达式就会执行多次,这样会导致行为异常的 因为表达式只能出现一次,所以暂时没有做临时的数据存储,就不会像GTest...自此,一个简易地单元测试框架就完成了,再加上一些终端颜色的控制,就基本OK了。 但是也是因为只是一个简单的框架,所以暂时不支持多线程,不支持在Windows命令提示符带颜色显示。...boost这个比较麻烦,因为boost的接口方式不一样,甚至在使用静态库的时候有自己的入口函数 简单地说就是分支比较多 在入口处要判断是静态库还是动态库,有没有使用boost.test内置的函数(详见

1.1K10

浅谈Python内置对象类型——数字篇(附py2和py3的区别之一)

前天小编写了一篇文章,关于如何在交互式环境执行Python程序,下图是部分实例,先感受一下数字类型对象。 ?...一、常量 Python的数字常量支持多种格式,我们常见的常量是整型和浮点型。...其实Python也支持科学计数法,常常用科学计数法来表示浮点数,1.2e-3或1.2E-3表示1.2*10的-3次方。...除了默认的十进制数之外,还可以使用二进制、八进制、十六进制来表示常数,不过要在这些数字前边添加前缀以便和十进制数进行区分,二进制、八进制、十六进制的前缀分别是0b、0、0x。...在Python,函数Fraction(x, y)表示分数x/y。在使用该函数之前,需要导入分数模块fractions,分数构建之后,就可以在表达式使用了。

1.1K20

浅谈Python内置对象类型——数字篇(附py2和py3的区别之一)

前天小编写了一篇文章,关于如何在交互式环境执行Python程序,下图是部分实例,先感受一下数字类型对象。...一、常量         Python的数字常量支持多种格式,我们常见的常量是整型和浮点型。...其实Python也支持科学计数法,常常用科学计数法来表示浮点数,1.2e-3或1.2E-3表示1.2*10的-3次方。...除了默认的十进制数之外,还可以使用二进制、八进制、十六进制来表示常数,不过要在这些数字前边添加前缀以便和十进制数进行区分,二进制、八进制、十六进制的前缀分别是0b、0、0x。...在Python,函数Fraction(x, y)表示分数x/y。在使用该函数之前,需要导入分数模块fractions,分数构建之后,就可以在表达式使用了。

1K30
领券