C++17 详解 20 — std::string_view
本文为 《C++17 in detail》 一书的中文渣中渣译文,不足之处还望指正。
翻译太特么累人了……剩余部分还是只做摘要翻译吧。
9. std::string_view
头文件:
1 |
string_view 是 string 的“视图”。它不拥有 string,也不会复制其内容,但你却可以通过 string_view 进行一些 string 相关的操作,从而避免不必要的复制。
本文为 《C++17 in detail》 一书的中文渣中渣译文,不足之处还望指正。
翻译太特么累人了……剩余部分还是只做摘要翻译吧。
头文件:
1 |
string_view 是 string 的“视图”。它不拥有 string,也不会复制其内容,但你却可以通过 string_view 进行一些 string 相关的操作,从而避免不必要的复制。
本文为 《C++17 in detail》 一书的中文渣中渣译文,不足之处还望指正。
翻译太特么累人了……剩余部分还是只做摘要翻译吧。
std::optional 可以表示一个二态值:空值、非空值;
std::variant 表示一个指定类型集合内的类型;
std::any 更进一步,它可以存储任何类型。
综合用例:
本文为 《C++17 in detail》 一书的中文渣中渣译文,不足之处还望指正。
翻译太特么累人了……剩余部分还是只做摘要翻译吧。
variant 是一种类型安全的 union。
头文件:
1 |
综合应用示例:
本文为 《C++17 in detail》 一书的中文渣中渣译文,不足之处还望指正。
翻译太特么累人了……剩余部分还是只做摘要翻译吧。
std::optional 可表达可空类型。
头文件:
1 |
本文为 《C++17 in detail》 一书的中文渣中渣译文,不足之处还望指正。
翻译太特么累人了……剩余部分还是只做摘要翻译吧。
本部分你将学到:
译注:关于并行算法,我之前已经吐槽过了。结论是不能用,不必期许过深。
本文为 《C++17 in detail》 一书的中文渣中渣译文,不足之处还望指正。
代码注解——属性——可能不是 C++ 最为人所知的特性。但是,属性却可能便于对编译器和其他程序员传达附加信息。C++11 起有了标准方式来声明属性。C++17 里你将能获得更多属性相关的有用的附加信息。
本章你将学到:
本文为 《C++17 in detail》 一书的中文渣中渣译文,不足之处还望指正。
auto
声明非类型模版参数这是在任何地方使用 auto 策略的另一部分。C++11/14 里你可以利用 auto 自动推断变量甚至返回值的类型,另外还有泛型 lambda。现在你也可以利用它推断非类型模版参数了。
比如:
1 | template <auto value> void f() { } |
本文为 《C++17 in detail》 一书的中文渣中渣译文,不足之处还望指正。
if constexpr
这是一个重点!
C++ 的编译时 if
!
此特性可以让你在编译时舍弃基于常量表达式条件的 if
语句的分支。
本文为 《C++17 in detail》 一书的中文渣中渣译文,不足之处还望指正。
C++11 引入了可变参模版,这是一个非常强力的特性,特别是你想实现一个有可变数量的模版参数的函数时。比如,(C++11)之前你不得不实现多个不同版本的模版函数(一个带一个参数、另一个带两个参数、另一个带三个参数……)。
三个大步骤: