abseil
g0415shenw
Stay hungry,Stay foolish
音视频交流群:759117824
GB28181技术交流群:708251501
UE4技术交流群:1036326334
展开
-
Abseil之string_view
本文翻译下面网址https://abseil.io/tips/1什么是string_view,你需要关心什么?当创建一个以(常量)字符串为参数的函数时,您有四种选择:两种是您已经知道的,两种是您可能不知道的:void TakesCharStar(const char* s); // C conventionvoid TakesString(const s...翻译 2019-06-22 09:44:14 · 2757 阅读 · 0 评论 -
Abseil之字符串连接
当代码reviower人说:“不要使用字符串连接操作符,它不是那么高效”时,用户常常感到惊讶。std::string::operator+不高效?搞错了吧?事实证明,这样的低效率并不是显而易见的。实际上,这两个代码段的执行时间几乎相同:std::string foo = LongString1();std::string bar = LongString2();std::string...翻译 2019-06-22 15:13:46 · 1449 阅读 · 0 评论 -
Abseil之拆分字符串
在任何通用编程语言中,将字符串分割成子串是一个常见的任务,C++也不例外。当谷歌出现需求时,许多工程师发现自己正艰难地通过一个不断增长的头文件分割函数的泥潭。您可能已经找到了满足您需求的输入参数、输出参数和语义的神奇组合。在研究了600+行头文件中的50+个函数之后,您可能最终决定了一个类似SplitStringViewToDequeOfStringAllowEmpty()的复杂名称。为了解...翻译 2019-06-23 14:00:17 · 2685 阅读 · 0 评论 -
Abseil之Return Policy
许多旧的C++代码库显示有点害怕复制对象的模式。幸运的是,由于所谓的“return value optimization”(rvo),我们可以不复制而“复制”。RVO是几乎所有C++编译器的一个长期特性。考虑下面的C++ 98代码,它有一个复制构造函数和一个赋值操作符。这些功能非常昂贵,开发人员让它们每次使用时都打印一条消息:class SomeBigObject { public:...翻译 2019-06-24 20:28:20 · 346 阅读 · 0 评论 -
Abseil之New Join API
你们中的许多人要求新的加入API,我们听到了。我们现在有一个连接函数来替换它们,它的拼写是absl::StrJoin()。只需给它一个要联接的对象集合和一个分隔符字符串,其余的就可以了。它将与std::string,absl::string_view,int,double-任何类型的absl::StrCat()支持。如果您需要加入一个不会strcat()的类型,您还可以为该类型提供一个自定义格式化...翻译 2019-06-24 21:39:55 · 705 阅读 · 0 评论 -
Abseil之Prefer Factory Functions to Initializer Methods
在不允许异常的环境中(例如在谷歌中),C++构造函数必须有效地成功,因为它们无法向调用方报告失败。当然,您可以使用abort(),但是这样做会使整个程序崩溃,这在生产代码中通常是不可接受的。如果类的初始化逻辑无法避免失败的可能性,一种常见的方法是给类一个初始值设定项方法(也称为“init方法”),该方法执行任何可能失败的初始化工作,并通过其返回值通知失败。通常假定用户在构造后立即调用此方法,如...翻译 2019-06-29 20:42:22 · 283 阅读 · 0 评论