设为首页 加入收藏

TOP

C++语言执行标准(二)
2023-07-23 13:26:28 】 浏览:65
Tags:
rray(就是个数组array<int, 5>,定义之后长度不可变,因此没有push_back等方法)。

对于内置数组,含有方法begin(), end()的类,如string,和STL容器,可使用for(auto/type x: container)循环,若要修改x的值,则使用引用for(auto/type &x: container)

新增cbegin(), cend(),是begin(), end()的const版本,防止对原容器的元素进行误改等操作。

begin(), end(), 分别指向容器的第一个元素,容器最后一个元素的后面。rbegin(), rend(), 分别指向容器的最后一个元素,容器第一个元素的前面,联合使用达到逆序遍历的效果。crbegin(), crend()是其const版本。

旧版使用嵌套模板时,尖括号要用空格分开,防止与运算符”>>”混淆,vector<list<int> > vec;

C++11不再要求,vector<list<int>> vec;

  • 多线程

    新增 线程支持库<thread>, <mutex>, <condition_variable>和<future>

    新增 原子操作库

    关键字thread_local,静态存储,与每个线程绑定一个,持续性和绑定的线程一致。

  • Lambda表达式/Lambda函数

    lambda函数也叫lambda表达式,就是匿名函数。C++11中,对于接收函数指针或函数符(STL中函数对象)作为参数的函数,可以使用lambda作为参数。

    lambda表达式定义的地方和调用的地方在同一个地方,便于调试和修改代码。通常lambda没有名字,也可给lambda指定名称。

    auto func = [] (int x) {return x % 3 == 0;}; // 给lambda指定名称func
    bool res = func(3);
    

    当lambda函数体只有一条语句时,如只有一条return,可不显式写返回类型,由decltype推断。否则,需要显式写返回类型,采用返回类型后置的格式,如下:

    [] (int x) –> int {x = 1; return x % 3;};
    

    lambda捕获方式主要有三种:值捕获、引用捕获和隐式捕获,使lambda函数体内可使用外部所有动态变量。有两种方式传入外部变量,一种是引用&,一种是值=,如果只传特定变量(显式捕获),则传值方式时可省略=(值捕获),传引用方式不可省略&(引用捕获)。传全部的外部变量时(隐式捕获),值方式用“=”标识所有变量,引用方式用“&”。捕获的变量放进 [] 里声明。

    [m,&n] (int x) –> int {x = m; return x % 3;}; // 值捕获:m传值,引用捕获:n传引用
    [=] (int x) –> int {x = n; return x % 3;}; // 隐式捕获:外部所有变量都通过值方式传递
    [&] (int x) –> int {x = n; return x % 3;}; // 隐式捕获:外部所有变量都通过引用方式传递
    [=,&n] (int x) –> int {x = n; return x % 3;}; // 表示n以引用方式传递,剩余变量以值方式传递
    // 隐式捕获与显式捕获混用时,隐式捕获必须是[]里第一个参数
    

    一些注意事项和详细例子:C++ lambda表达式详细讲解2-隐式捕获与显式捕获-bingma03的博客-CSDN博客

  • 首页 上一页 1 2 下一页 尾页 2/2/2
    】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
    上一篇C++面试八股文:用过STL吗? 下一篇C++面试八股文:std::vector了解..

    最新文章

    热门文章

    Hot 文章

    Python

    C 语言

    C++基础

    大数据基础

    linux编程基础

    C/C++面试题目