首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++11『基础新特性』

    来说,带来了数量可观的变化, 其中包含了约 140 个新特性,以及对 C++98/03 中约 600 个缺陷修正,这就使得 C++11 更像是一次变革,变成了一种 “新的语言”(因为 C++11 中的部分操作显得很不...C++14、C++17、C++20 标准,最新的 C++23 也已经发布,新标准意味着新特性,是需要慢慢适应的,并且 C++14/17 也只是对 C++11 的修复和补充,所以我们着重学习 C++11...2022 进行 C++11 新标准的学习 注:C++11 中的新特性众多,本文以及后续文章只是列举常用语法 2.列表初始化 列表初始化 { } 是我们学习的第一个 C++11 新特性,这玩意其实我们在...可能有的人会说我们都是直接使用 { } 初始化的,没错,你使用的正是 列表初始化 这个新特性,只是你没有发现罢了 int main() { // C++11 之后 vector arr =...C++ 变得更加强大 C++11 的重磅更新为 右值引用和移动语义、lambda表达式、线程库、包装器等,限于篇幅原因,这些重磅更新将会放到后面的文章中详细讲解 总结 以上就是关于 C++11『基础新特性

    31140

    C++11新特性使用总结

    最近开始使用C++11编码,编码效率和代码质量提升不少,把目前我遇到的提升效率和代码质量的新特性都总结一下。...(备注:这里不会列出所有的C++11新特性,只会列出我编码过程中实际用到的新特性) 一、auto关键字,这个关键字作用类似js里的var,可以自动判断变量类型。...的功能就完成了。 五、lambda函数,就是匿名函数,看各种介绍说很牛B的样子,不过目前我用的很少,应该是在foreach这类函数里用比较好。或者可以用来实现boost里scope_exit的特性。...六、chrono,stl里新提供了chrono类,这个类主要提供两个功能,时间点(timepoint)和时间段(duration)功能,由duration衍生出nanoseconds,microseconds...目前用到的主要就这六个地方,后续有觉得新的好特性再继续总结。

    1.8K00

    C++11新特性之线程操作

    大家好,又见面了,我是全栈君   C++11之前没有对并发编程提供语言级别的支持,这使得我们在编写可移植的并发程序时,存在诸多的不便。...现在C++11增加了线程以及线程相关的类,很方便地支持了并发编程,使得编写的多线程程序的可移植性得到了很大的提高。 1....互斥量   C++11提供了以下4中语义的互斥量:   std::mutex:独占互斥量,不能递归使用   std::timed_mutex:带超时的独占互斥量,不能递归使用   std::recursive_mutex...try_lock()尝试锁定互斥量,如果成功则返回true 2.2 递归的独占互斥量   需要注意的是尽量不要使用递归锁:   (1)需要用到递归锁的多线程互斥处理本身就应该可以简化的,运行递归互斥很容易放纵复杂逻辑的产生...3.2 示例实现消息循环队列 3.2.1 实现代码 // 使用C++11的新特性实现线程安全的循环消息队列 #pragma once #include #include<mutex

    55420

    c++11新特性:default和delete

    但这样做其实是很tricky的方式,相当于利用c++的一些特性碰巧来实现,总感觉不是正确的方法。...C++11新定义了一个叫做move constructor的构造函数,签名方法如下: class_name(class_name &&); class_name& operator=(class_name...,move生成的新的实例和原先的实例是由同一个指针指向的,即实际上是同一个实例。...这就是这个新特性的简单介绍,感觉应用场合不是很多,可能是我还没搞懂的原因吧。 看了这篇博客,发现这个新特性还是很强大的啊~还是too young。...从这里看到,vs2012里面还不支持这个特性,vs2013才开始支持。在g++中,可以通过使用-std=c++11来启用这个特性(我用的是g++4.9.2,默认是开启的)。

    1.3K30

    C++11新特性--智能指针

    C++程序员在编写代码的过程往往都会涉及到堆内存的开辟和释放,使用new和delete关键字。特别是内存的释放是通过程序员手动完成的,而不像栈内存只要生存周期结束即可由系统自动回收。...所在在实际的编码中,如果忘记手动释放内存或因其他一些细节原因而未进行堆内存的释放,最终导致产生大量的内存释放,造成资源浪费。...综上的三个例子,对于C++使用堆内存资源并造成内存泄漏的几率还是非常大的,即使你非常小心仔细的处理每一个可能会被泄漏的堆内存,也难免会出现一些问题。...智能指针 智能指针是一个类,它将裸指针(带*的指针)进行了封装,实现的指针的自动释放,它的高明之处就在于程序员只需要一次性的设计出一个具有良好功能的智能指针类,用它实例化出来的对象会自动对对象内存的堆资源进行管理...(3)*和->的重载函数是没有形式参数的。

    27810

    c++11新特性之智能指针

    很多人谈到c++,说它特别难,可能有一部分就是因为c++的内存管理吧,不像java那样有虚拟机动态的管理内存,在程序运行过程中可能就会出现内存泄漏,然而这种问题其实都可以通过c++11引入的智能指针来解决...c++11引入了三种智能指针: std::shared_ptr std::weak_ptr std::unique_ptr shared_ptr shared_ptr使用了引用计数,每一个shared_ptr...int main() { auto ptr = std::unique_ptr(new A); auto tptr = std::make_unique(); // error, c+...关于c++11的智能指针的使用就介绍到这里,大家有问题可以点此留言 ,我会尽快回复~ 参考资料 https://www.jianshu.com/p/b6ac02d406a0 https://juejin.im.../post/5dcaa857e51d457f7675360b#heading-16 《深入应用c++11:代码优化与工程级应用》

    83110

    C++11新特性 右值引用与新的类功能

    相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。...C++11增加的语法特性非常篇幅非常多,我们这里没办法一 一讲解,所以本节主要讲解实际中比较实用的语法。...SLT中的一些变化 新容器 用橘色圈起来是C++11中的一些几个新容器,但是实际最有用的是unordered_map和unordered_set。...右值引用和移动语义 5.1 左值引用和右值引用 传统的C++语法中就有引用的语法,而C++11中新增了的右值引用语法特性,所以从现在开始我们之前学习的引用就叫做左值引用。...可变模板参数 C++11的新特性可变参数模板能够让您创建可以接受可变参数的函数模板和类模板,相比C++98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数无疑是一个巨大的改进。

    10210

    C++11新特性--lambda表达式

    在C++11以后,形如这样的语法。 [capture](parameters)mutable ->return-type{statment}称为一个lambda表达式,表达一个匿名函数。...从编程的角度上看,lambda是一种函数式编程。 分析语法: 1.capture,可以通过值传递或者引用传递的方式给匿名函数提供访问父作用域上下文的变量。...特殊的两种情况:[=]和[&]分别表示,以值传递的形式捕捉所有父作用域的变量和以引用传递的形式捕捉所有父作用域的变量。 2.()参数列表形如一般的函数的参数列表。没有参数时可以忽略不写。...3.可选择项,mutable,->return type,分别表示去除匿名函数的常量性,->return type是匿名函数的返回值类型,可以忽略由编译器自动推导。添加可选项必须在此之前增加()。...#include using namespace std; //对()进行重载的函数,在调用()时与调用函数有着相似之处,但是是通过对象名称调用的 class Functor{

    31610

    【C++】深入剖析C++11新特性

    相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。...C++11增加的语法特性非常篇幅非常多,我们这里没办法一 一讲解,所以本期博客主要讲解实际中比较实用的语法。...具体参考:【C++】三大特性之多态_ ---- 六、STL中一些变化 用橘色圈起来是C++11中的一些几个新容器,但是实际最有用的是unordered_map和unordered_set。...---- 七、右值引用 1.右值引用和左值引用 传统的C++语法中就有引用的语法,而C++11中新增了的右值引用语法特性,所以从现在开始我们之前学习的引用就叫做左值引用。...---- 九、可变参数模版 C++11的新特性可变参数模板能够让您创建可以接受可变参数的函数模板和类模板,相比C++98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数无疑是一个巨大的改进

    58540

    C++11常用新特性快速一览

    类型别名模板 在传统 C++中,typedef 可以为类型定义一个新的名称,但是却没有办法为模板定义一个新的名称。因为,模板不是类型。...Lambda 表达式 Lambda 表达式,实际上就是提供了一个类似匿名函数的特性,而匿名函数则是在需要一个函数,但是又不想费力去命名一个函数的情况下去使用的。...第二行和第三行的参数则是右值,因为表达式产生的 string 对象是匿名对象,之后没有办法再使用了。 C++ 11 引入了一种新的机制叫做“右值引用”,以便我们通过重载直接使用右值参数。...表达式和持有调用函数返回的 auto_ptr 值类型的 make_triangle() 表达式之间一定有一些潜在的区别,每调用一次后者就会创建一个新的 auto_ptr 对象。...右值引用是针对右值的新的引用类型,语法是 X&&。以前的老的引用类型 X& 现在被称作左值引用。

    2.6K50

    C++11:新特性&右值引用&移动语义

    相比于 C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中 约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。...另外emplace还涉及模板的可变参数, 五、右值引用和移动语义 5.1 区分左值引用和右值引用 传统C++语法就有引用的概念,而在C++11之后新增了一个右值引用的语法特性,在我们区分左值和右值之前...由于上面的原因,在有些情况下一旦出现嵌套调用,但是我们并不希望改变他右值的特性。...七、可变参数模版 C++11的新特性可变参数模板能够让您创建可以接受可变参数的函数模板和类模板,相比 C++98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数无疑是一个巨大的改进...同时还用到了C++11的另外一个特性——初始化列表,通过初始化列表来初始化一个变长数组, {(printarg(args), 0)...}将会展开成((printarg(arg1),0),(printarg

    10610

    C++编程经验(12):C++11新特性

    没有系统学过,所以这篇写的基本都是我接触过的,接触过多少就整理多少吧。 有些特性也不知道是不是新的,反正都是我新接触的,用的还挺顺手。...---- 语法层面 区间迭代range for 用过一次我就很喜欢这个特性了,写起来是方便了不少。...当然不是说用NULL有什么问题,不过新的规范都出来了,就用新规也没什么不好嘛。...C++11为了解决这个问题,提供了std::move()方法来将左值转换为右值,从而方便应用移动语义。move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转义,没有内存拷贝。...容器的emplace成员 emplace操作是C++11新特性,新引入的的三个成员emplace_front、emplace 和 emplace_back。

    1K20

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券