自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (2)
  • 收藏
  • 关注

翻译 Google C++每周贴士 #45: 少用Flags,尤其是在库代码中

(原文链接:https://abseil.io/tips/45 译者:[email protected])每周贴士 #45: 少用Flags,尤其是在库代码中最初发布于:2013-06-03作者:Titus Winters短链接:abseil.io/tips/45“我真正想要的,是用不可静态预测的全局变量控制我代码的行为,其使用日志没有完全被记录,且移走它非常费劲。”——从来没有人在产品代码中普遍使用flags,尤其是在库里面,是一个错误。如果不是真的必要,不要使用flags。就这样,勿谓言

2021-09-14 12:37:43 491

翻译 Google C++每周贴士 #144: 关联容器的混杂查询

(原文链接:https://abseil.io/tips/144 译者:[email protected])每周贴士 #144: 关联容器的混杂查询最初发布于:2018-03-23作者:Samuel Benzaquen更新于:2020-04-06短链接:abseil.io/tips/144介绍关联容器为每个元素关联了一个键(key)。在容器中插入或查询元素需要一个等值的键。通常情况下,容器要求键是特定的类型,这可能导致调用处的低效率,因为需要在近似的类型之间做转换(比如std::strin

2021-08-31 13:13:15 275

翻译 Google C++每周贴士 #136: 无序容器

(原文链接:https://abseil.io/tips/136 译者:[email protected])每周贴士 #136: 无序容器最初发布于:2017-06-23作者:Matt Kulukundis更新于:2020-04-06短链接:abseil.io/tips/136“Sometimes, when the material is really good, you put expectations on yourself to make it the best possible s

2021-08-31 12:27:35 2709

翻译 Google C++每周贴士 #153: 别用using指示

(原文链接:https://abseil.io/tips/153 译者:[email protected])每周贴士 #153: 别用using指示最初发布于:2018-07-17作者:Roman Perepelitsa 和 Ashley Hedberg更新于:2020-04-06短链接:abseil.io/tips/153在我看来using指示就是定时炸弹,不论是对它处理的部分还是类型系统。 – Ashley Hedberg 带着对Warren Buffett的歉意长话短说(tl;dr)

2021-08-28 13:50:11 177

翻译 Google C++每周贴士 #147: 负责任地使用穷举`switch`

(原文链接:https://abseil.io/tips/147 译者:[email protected])每周贴士 #147: 负责任地使用穷举switch最初发布于:2018-04-25作者:Jim Newsome更新于:2020-04-06短链接:abseil.io/tips/147介绍指定了编译选项-Werror以后,在switch一个enum类型数值的语句里,如果某个enum的枚举值没有对应的case,且没有default标签,那么编译就会失败。这通常被称作 穷举 或者 无默认值

2021-08-17 14:39:18 145

翻译 Google C++每周贴士 #103: Flag是全局变量

(原文链接:https://abseil.io/tips/103 译者:[email protected])每周贴士 #103: Flag是全局变量作者:Matt Armstrong短链接:abseil.io/tips/103在.cc文件的全局作用域定义flag。在相应的.h文件里声明之(最多一次)。为什么要在头文件中声明东西?对我们大部分人来说,使用头文件是本能反应,所以我们也许忘记了它们为什么被使用:在头文件中声明东西,可以使其很容易被其他地方#include。整个程序看到的都是同样

2021-08-10 12:53:47 515

翻译 Google C++每周贴士 #168: `inline`变量

(原文链接:https://abseil.io/tips/168 译者:[email protected])每周贴士 #168: inline变量最初发布于:2019-09-12作者:James Dennett更新于:2020-04-06短链接:abseil.io/tips/168C++17提供的inline变量提供了一种在头文件中定义字符串常量的安全方式:inline constexpr absl::string_view kHelloWorld = "Hello World.";c

2021-08-10 12:18:45 198

翻译 Google C++每周贴士 #161: 局部变量有好有坏

(原文链接:https://abseil.io/tips/161 译者:[email protected])每周贴士 #161: 局部变量有好有坏最初发布于:2019-04-16作者:James Dennett更新于:2020-04-06短链接:abseil.io/tips/161We may freak out globally, but we suffer locally. – Jonathan Franzen概要局部变量挺好的,但是容易被滥用。通过将其限制在它能提供确切好处的地方,

2021-08-03 14:42:19 228

翻译 Google C++每周贴士 #166: 你不是真正的复制

(原文链接:https://abseil.io/tips/166 译者:[email protected])每周贴士 #166: 你不是真正的复制最初发布于:2019-08-28作者:Richard Smith更新于:2020-04-06短链接:abseil.io/tips/166Entia non sunt multiplicanda praeter necessitatem." (“Entities should not be multiplied without necessity”)

2021-07-27 13:16:19 126

翻译 Google C++每周贴士 #146: 默认与值初始化

(原文链接:https://abseil.io/tips/146 译者:[email protected])每周贴士 #146: 默认与值初始化最初发布于:2018-04-19作者:Dominic Hamon更新于:2020-04-06短链接:abseil.io/tips/146“通往成功的路总是在施工”——莉莉·汤普琳长话短说(TL;DR)为安全性和可读性起见,你应该假设标量对象(scalar objects)在被显式赋值之前都没有初始化为合理值。使用初始化器可以确保标量值被初始化成了

2021-07-20 13:26:05 219

翻译 Google C++每周贴士 #177: 可赋值性与数据成员类型

(原文链接:https://abseil.io/tips/177 译者:[email protected])每周贴士 #177: 可赋值性与数据成员类型最初发布于:2020-04-06作者:Titus Winters更新于:2020-04-06短链接:abseil.io/tips/177做类型的实现,先要决定类型的设计。先考虑API,后考虑实现细节。这件事的一个常见例子是,类型的可赋值性与数据成员限定符之间的权衡。决定如何呈现数据成员设想你正在写一个City类,然后正在探讨如何呈现它的数

2021-07-18 08:14:20 127

翻译 Google C++每周贴士 #172: 指派初始化器

(原文链接:https://abseil.io/tips/172 译者:[email protected])每周贴士 #172: 指派初始化器最初发布于:2019-12-11作者:Aaron Jacobs更新于:2020-04-06短链接:abseil.io/tips/172指派初始化器是C++20中的一种语法,以紧凑、易读、易维护的方式初始化结构体内容。为了取代繁复的struct Point { double x; double y; double z;};Point

2021-07-13 13:28:43 282

翻译 Google C++每周贴士 #171: 别用哨兵值

(原文链接:https://abseil.io/tips/171 译者:[email protected])每周贴士 #171: 别用哨兵值最初发布于:2019-11-08作者: Hyrum Wright更新于:2020-04-06短链接:abseil.io/tips/171哨兵值是指在特定上下文下有特别含义的值。例如,考虑如下API:// 返回账户余额,如果账户已关闭则返回-5。int AccountBalance();除了-5,每个int的值都可以是AccountBalance的

2021-07-13 12:38:06 247

翻译 Google C++每周贴士 #175: C++14和C++17里对字面值常量的改变

(原文链接:https://abseil.io/tips/175 译者:[email protected])每周贴士 #175: C++14和C++17里对字面值常量的改变最初发布于:2021-01-30作者: James Dennett更新于:2020-04-06短链接:abseil.io/tips/175“唯一不变的东西就是变化”——梅莉莎·埃瑟里奇概述C++现在有了一些特性,使得数字字面值更易读了。整数字面值可以被写作二进制了(0b00101010),正如十进制(42),十六进制

2021-07-07 13:44:05 155

翻译 Google C++每周贴士 #163: 传递`absl::optional`参数

(原文链接:https://abseil.io/tips/163 译者:[email protected])每周贴士 #163: 传递absl::optional参数最初发布于:2019-07-11作者:Ian Eldred Pudney更新于:2020-04-06短链接:abseil.io/tips/163空值真的是十亿美元的错误吗?问题比方说你需要实现一个函数,接收一个可能存在也可能不存在的参数。你可能禁不住去用现代的,闪瞎狗眼的absl::optional。但是吧,如果这个对象大到

2021-07-07 12:31:39 2970

翻译 Google C++每周贴士 #140: 常量:安全用法

(原文链接:https://abseil.io/tips/140 译者:[email protected])每周贴士 #140: 常量:安全用法最初发布于:2017-12-08作者:Matt Armstrong更新于:2020-05-06短链接:abseil.io/tips/140C++里表达常量最好的方式是什么?你也许知道这个词儿在英语里是什么意思,但在代码里却很容易被错误地表达。这里我们先定义几个核心概念,然后探讨一系列安全技巧。如果你还好奇的话,我们会接着聊聊容易弄错的情况细节,然后介

2021-06-30 14:53:31 249

翻译 Google C++每周贴士 #5: 消逝的演出

(原文链接:https://abseil.io/tips/5 译者:[email protected])每周贴士 #5: 消逝的演出最初发布于:2012-06-26更新于:2020-06-01短链接:abseil.io/tips/5“Don’t know what you got till it’s gone.” --Cinderella“直到失去之后才追悔莫及”——灰姑娘乐队有时候,为了正确地运用C++的库,你既需要理解库本身,又需要理解这门语言。那么……下面代码中的问题是什么?//

2021-06-22 13:28:42 118

翻译 Google C++每周贴士 #116: 如何存储指向参数的引用

(原文链接:https://abseil.io/tips/116 译者:[email protected])每周贴士 #116: 如何存储指向参数的引用最初发布于:2016-05-26作者:Alex Pilkiewicz更新于:2020-06-01短链接:abseil.io/tips/116From painting to image, from image to text, from text to voice, a sort of imaginary pointer indicates,

2021-06-15 13:11:20 146

翻译 Google C++每周贴士 #187: std::unique_ptr必须被移动

(原文链接:https://abseil.io/tips/187 译者:[email protected])每周贴士 #186: std::unique_ptr必须被移动最初发布于:2020-11-05作者:Andy Soffer更新于:2020-11-05短链接:abseil.io/tips/187如果你说第一幕中有个std::unique_ptr挂在墙上,那么在第二幕或者第三幕中它必须被移动,不然就没必要挂在那。——对不住啦契诃夫std::unique_ptr是用来表达所有权转移的。如

2021-06-12 13:25:17 247

翻译 Google C++每周贴士 #186: 最好把函数放在匿名命名空间里

(原文链接:https://abseil.io/tips/186 译者:[email protected])每周贴士 #186: 最好把函数放在匿名命名空间里最初发布于:2020-11-05作者:James Dennett 和 Jason Rennie更新于:2021-11-05短链接:abseil.io/tips/186“Everything should be made as simple as possible, but no simpler.” ~ RogerSessions’s

2021-06-11 13:15:45 394 1

翻译 Google C++每周贴士 #77: 临时变量,移动,和复制

(原文链接:https://abseil.io/tips/77 译者:[email protected])每周贴士 #77: 临时变量,移动,和复制最初发布于:2014-07-09作者:Titus Winters更新于:2017-10-20短链接:abseil.io/tips/77我们正在尝试给语言专家以外的人解释清楚C++11会怎样改变代码世界,因此在“什么时候发生复制?”系列中又增加了一篇文章。这也是更广泛的尝试之中的一部分,试图用一套更简单的规则简化C++中的变量复制规则。你会数到2

2021-05-25 13:07:26 237

翻译 Google C++每周贴士 #165: 带初始化器的`if`和`switch`语句

(原文链接:https://abseil.io/tips/165 译者:[email protected])每周贴士 #165: 带初始化器的if和switch语句最初发布于:2019-08-17作者:Thomas Köppe更新于:2020-01-17短链接:abseil.io/tips/165如果你用不到条件控制流程,那可以到此为止了。一个新语法C++17 允许 if和switch语句包含初始化器:if (init; cond) { /* ... */ }switch (init

2021-05-18 13:36:40 151

翻译 Google C++每周贴士 #181: 访问StatusOr<T>里的值

(原文链接:https://abseil.io/tips/76 译者:[email protected])每周贴士 #181: 访问StatusOr<T>里的值最初发布于:2020-07-09作者:Michael Sheely更新于:2020-09-02短链接:abseil.io/tips/181StatusOr的可读性(StatusOr<Readability>):你不需要做选择!当需要访问absl::StatusOr<T>里的对象的时候,我们应该

2021-05-12 13:49:13 1736

翻译 Google C++每周贴士 #49: 参数依赖查找

(原文链接:https://abseil.io/tips/49 译者:[email protected])每周贴士 #49: 参数依赖查找最初发布于:2013-07-14“…whatever disappearing trail of its legalistic argle-bargle one chooses to follow…” –Antonin Scalia, U.S. v W...

2021-05-05 13:08:08 255

翻译 Google C++每周贴士 #76: 使用absl::Status

(原文链接:https://abseil.io/tips/76 译者:[email protected])每周贴士 #76: 使用absl::Status最初发布于:2014-05-04作者:Titus Winters更新于:2020-02-06短链接:abseil.io/tips/76有同学提问在什么时候、该怎么使用absl::Status,所以这里准备了一些应该使用Status的情况,以及使用的时候要注意些什么。传达意图且强制调用者处理错误使用Status来强制调用者处理可能出现的错

2021-05-04 13:12:00 1850

翻译 Google C++每周贴士 #176: 返回值优于输出参数

(原文链接:https://abseil.io/tips/176 译者:[email protected])每周贴士 #176: 返回值优于输出参数最初发布于:2020-03-12作者:Etienne Dechamps更新于:2020-04-06短链接:abseil.io/tips/176问题考察如下代码:// 从给定的`doodad`中提取`foos_spec`和`bar_s...

2020-04-14 08:57:19 379

翻译 Google C++每周贴士 #173: 以Option结构体传递参数

(原文链接:https://abseil.io/tips/173 译者:[email protected])C++每周贴士 #173: 以Option结构体传递参数最初发布于:2019-12-19作者:John Bandela更新于:2020-04-06短链接:abseil.io/tips/173It came without packages, boxes or bags. An...

2020-04-08 10:45:04 388

翻译 Google C++每周贴士 #108: 避免使用std::bind

(原文链接:https://abseil.io/tips/108 译者:[email protected])每周贴士 #108: 避免使用std::bind最初发布于2016-01-07作者:Roman Perepelitsa ([email protected])更新于2019-12-19短链接:abseil.io/tips/108避免使用std::bind...

2020-04-06 06:34:45 1027

翻译 Google C++每周贴士 #152: AbslHashValue和你

(原文链接:https://abseil.io/tips/152 译者:[email protected])每周贴士 #152: AbslHashValue和你最初发布于2018-06-21作者:Matt Kulukundis(译者注:这库用起来就一个字儿,爽!)“I love Mozart, but I often make a terrible hash of it.” – Si...

2019-04-02 14:11:31 1522

翻译 Google C++每周贴士 #42: 工厂函数优于初始化方法

(原文链接:https://abseil.io/tips/42 译者:[email protected])C++每周贴士 #42: 工厂函数优于初始化方法最初发布于2013-05-10作者:Geoffrey Romer ([email protected])校订于2017-12-21“The man who builds a factory builds a temple; the ...

2018-10-10 15:00:00 1166

翻译 Google C++每周贴士 #36: 新的拼接API

(原文链接:https://abseil.io/tips/36 译者:[email protected])C++ 每周贴士 #36: 新的连接(Join)API最初发布于2013-03-21作者:Greg Miller ([email protected])更新于2018-01-24“I got a good mind to join a club and beat you over th...

2018-10-09 13:24:20 424

翻译 Google C++每周贴士 #24: 复制简明判定法

(原文链接:https://abseil.io/tips/24 译者:[email protected])Tip of the Week #24: Copies, Abbrv.C++每周贴士 #24: 复制简明判定法原始发布于2012-11-26作者:Titus Winters, ([email protected])和Chandler Carruth (chandlerc@google....

2018-10-04 13:08:26 204

翻译 Google C++每周贴士 #11: 返回策略

(原文链接:https://abseil.io/tips/10 译者:clangpp)C++每周贴士 #11: 返回策略最初发布于2012-08-16作者:Paul S. R. Chisholm ([email protected])Frodo: There’ll be none left for the return journey. Sam: I don’t thi...

2018-10-02 14:42:56 307

翻译 Google C++每周贴士

C++每周贴士原文链接:https://abseil.io/tips/背景介绍:大约五年前,我们在Google内部开始发布一系列C++贴士,大约每周一个,被称为“C++每周贴士”(TotW)。这个系列非常成功,直到今天我们还在发布它们。(这也表明像C++这么丰富的语言短期内不会让我们没主题可发)。我们不光讨论更精细的语言知识点,我们是真的“贴士”风格——提供建议或设计偏好。C++ Tot...

2018-09-27 15:16:23 629

翻译 Google C++每周贴士 #10: 分割字符串,不必拘小节

C++每周贴士 #10: 分割字符串,不必拘小节原文链接:https://abseil.io/tips/10最初发布于:2012-08-16作者:Greg Miller ([email protected])更新于:2018-01-24I tend to have an odd split in my mind. –John Cleese(译者注:在文章开始引用一段名人名言是TotW的一...

2018-09-27 14:04:54 636

翻译 Google C++每周贴士 #3: 字符串拼接,operator+对比StrCat()

C++每周贴士 #3: 字符串拼接,operator+对比StrCat()原文链接:https://abseil.io/tips/3最初发布于2012-05-11更新于2017-09-18校订于2018-01-22当审查代码的的人对程序员说“别用字符串拼接操作符,太低效了”,程序员常常会一脸吃惊:std::string::operator+怎么会低效呢?难道这不是很难出错的方式吗?...

2018-09-26 15:10:04 1172

翻译 Google C++每周贴士 #1: string_view

C++贴士 #1: string_view原文链接: https://abseil.io/tips/1最初发布于2012-04-20作者: Michael Chastain ([email protected])更新于2017-09-18什么是string_view,以及为什么你应该关心?如果需要写一个函数接受(常量)字符串为输入参数,你有四个选项:其中两个你已经知道了,另...

2018-09-26 14:04:11 1538

原创 Google C++编程规范 阅读笔记

最近正在看Google C++ Style Guide(中文版在这里),发现有一些貌似不起眼的话,其实很重要。想来想去,还是觉得记一下比较好,以后编程也好有个参照,算是送给未来的我一个礼物吧。 ...

2018-09-26 13:57:52 198

原创 用C++11优化矩阵运算的空间和时间效率

最近在segmentfault.com上看到一个问题,提问者想要利用C++11的移动语义,减少矩阵相加时临时对象的构造。受此启发,我实现了一个简单的矩阵类,利用C++11标准中的一些特性,对矩阵运算进行了时间和空间效率的优化。(完整代码:matrix.h、matrix_test.cc、run.sh)用C++11的移动语义,优化矩阵运算的空间效率C++11的右值引用(T&&),可以将一个变量

2014-08-28 00:21:47 3762 2

原创 关于C++现状的一些思考

最近突然有种感觉,觉得现在才开始接触C++的人很幸运,他们现在就有C++11里面

2014-04-27 16:02:58 1225

C++11 Matrix

C++11实现矩阵类: 1. 使用右值引用(r-value reference),大大减少矩阵运算中的临时矩阵数量,提供直观的调用语法和高空间效率; 2. 使用并发编程(std::async),充分利用多核CPU,对矩阵运算效率进行优化,对外接口不变。

2014-09-12

wata ACM 模板 v0.9

wata模板,著名ACM备战模板,推荐想做ACM的同学下载!

2014-09-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除