首页
学习
活动
专区
工具
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『基础特性

18640
您找到你想要的搜索结果了吗?
是的
没有找到

【C++】C++11 特性

C++11 增加了许多特性,使得C++更像一种新语言,比如:正则表达式、基于范围for循环、auto关键字、容器、列表初始化、右值引用、智能指针、标准线程库等 C++14 对C++11扩展,主要是修复...C++11中漏洞以及改进,比如:泛型lambda表达式,auto返回值类型推导,二进制字面常量等 C++17 在C++11上做了一些小幅改进,增加了19个特性,比如:static_assert()...文本信息可选,Fold表达式用于可变模板,if 和 switch 语句中初始化器等 C++20 自C++11以来最大发行版,引入了许多特性,比如:模块(Modules)、协程(Coroutines...相比于C++98/03,C++11 则带来了数量可观变化,其中包含了约140个特性,以及对 C++03 标准中约600个缺陷修正,这使得 C++11 更像是从 C++98/03 中孕育出一种新语言...C++11 增加语法特性非常篇幅非常多,我们这里主要讲解实际中比较实用语法。

1.3K10

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

48820

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)*和->重载函数是没有形式参数

25210

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:代码优化与工程级应用》

76010

【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,类模版和函数模版中只能含固定数量模版参数,可变模版参数无疑是一个巨大改进

24040

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{

27710

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

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

2.5K50

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

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

94220

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券