zoukankan      html  css  js  c++  java
  • C++标准库第二版笔记 2.1

    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 Syntax)

    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???

  • 相关阅读:
    leetcode-14
    贪心算法
    MySQL索引
    leetcode-13
    leetcode-12
    leetcode-11
    深度和广度优先搜索
    CentOS出错You don't have permission to access on this server
    linux给文件或目录添加apache权限
    让CentOS在同一个窗口打开文件夹
  • 原文地址:https://www.cnblogs.com/PROJECT-IDOLPROGRAM/p/9251720.html
Copyright © 2011-2022 走看看