C++标准库第二版笔记 2.1
程序员文章站
2022-06-21 16:08:30
C++标准库第二版笔记 2.1 1 Range-Based for 循环 for ( decl : coll ) { statements; } // collaborate 类似C# foreach? 2 新式的字符串字面常量(String Literal) 常用于正则表达式(regular ex ......
C++标准库第二版笔记 2.1
1 Range-Based for 循环
for ( decl : coll ) { statements; } // collaborate
类似C# foreach?
2 新式的字符串字面常量(String Literal)
常用于正则表达式(regular expression)
R"(\\n)" // 相当于 R"\\\\n"
当你想在字符串中写出一个右括号“)”,则使用定义符(delimiter) 换而言之,如果你想在字符串中添加括号,使用定义符。
R"NC(any stuff NC())NC" // Equals "any stuff NC()"
2.1 编码的(encoded)string literal
L"" // wide string literal "wchar_t" U"" // string literal char32_t u"" // string literal char16_t u8"" // UTF-8 const char
16章介绍如何使用不同的编码(encoding)完成国际化(internationalization)
3 关键字 noexcept
异常是一个尚未能理解的大话题,另起一篇文章详细讨论异常。
4 崭新的 template 特性
模版是一个尚未能理解的大话题,另起一篇文章详细讨论模版。
5 lambda 表达式
同上
6 关键字 decltype
decltype(declared type)
是一个可以让编译器找出表达式类型的关键字。
std::map<std::string, float> coll; decltype(coll)::value_type elem;
应用之一是声明返回类型,另一个用途是metaprogramming(超编程;元编程)或是用来传输一个lambda类型。
7 新的函数声明语法(New Function Declaration Synatax)
template<typename T1, typename T2> auto add(T1 x, T2 y) -> decltype(x+y) // Equals Pseudocode decltype(x+y) add(T1 x, T2 y)
这种写法和“为lambda声明返回类型”是一样的。
8 带领域的(scoped)枚举常量(enumeration)
又称strong enumeration或enumeration class,这是enumeration value(或称为enumerator)的一个较干净的实现。
enum class Salutation : char { mr, ms, co, none };
好处: 1、绝不会隐式自、至int 2、如果数值不再enumeration被声明的作用域内,你必须改写为salutation::mr 3、通过定义一个底层类型来确保每一个值的大小。 4、有提前声明(forward declaration)可供使用,以避免新的值而重新编译。
type trait std::underlying_type 你可以核定(evaluate)一个枚举类型。
error condition value也是一个scoped enumerator???