c++11特性使用】的更多相关文章

转载自http://blog.jobbole.com/44015/ 在C++11新标准中,语言本身和标准库都增加了很多新内容,本文只涉及了一些皮毛.不过我相信这些新特性当中有一些,应该成为所有C++开发者的常规装备.你也许看到过许多类似介绍各种C++11特性的文章.下面是我总结的,C++开发者都需要学习和使用的C++11新特性. auto 在C++11之前,auto关键字用来指定存储期.在新标准中,它的功能变为类型推断.auto现在成了一个类型的占位符,通知编译器去根据初始化代码推断所声明变量的…
这篇文章讨论了一系列所有开发者都应该学习和使用的C++11特性,在新的C++标准中,语言和标准库都加入了很多新属性,这篇文章只会介绍一些皮毛,然而,我相信有一些特征用法应该会成为C++开发者的日常用法之一.你也许已经找到很多类似介绍C++11标准特征的文章,这篇文章可以看成是那些常用特征描述的一个集合. 目录: auto关键字 nullptr关键字 基于区间的循环 Override和final 强类型枚举 智能指针 Lambdas表达式 非成员begin()和end() static_asser…
http://blog.jobbole.com/44015/// | 分类: C/C++, 开发 | 条评论 | 标签: C++, C语言 分享到: 本文由 伯乐在线 - 治不好你我就不是兽医 翻译自 Marius Bancila.未经许可,禁止转载! 欢迎加入:技术翻译小组,或分享原创到伯乐头条. [感谢冯上(@治不好你我就不是兽医 )的热心翻译.如果其他朋友也有不错的原创或译文,可以尝试推荐给伯乐在线.] 在C++11新标准中,语言本身和标准库都增加了很多新内容,本文只涉及了一些皮毛.不过我…
目前主流编译器对C++11特性的支持情况 1. GCC编译器(从编译器GCC4.8.X的版本完全支持) (1)目前C++11特性,之前成为C++0X特性,从GCC4.3的后续版本中逐步对C++11进行支持. (2)从官方信息可以看到,目前从完全对C++11特性进行支持的是从编译器GCC4.8.X的版本.…
摘要: 在C++11新标准中,语言本身和标准库都增加了很多新内容,本文只涉及了一些皮毛.不过我相信这些新特性当中有一些,应该成为所有C++开发者的常规装备.你也许看到过许多类似介绍各种C++11特性的文章.下面是我总结的,C++开发者都需要学习和使用的C++11新特性. auto 在C++11之前,auto关键字用来指定存储期.在新标准中,它的功能变为类型推断.auto现在成了一个类型的占位符,通知编译器去根据初始化代码推断所声明变量的真实类型.各种作用域内声明变量都可以用到它.例如,名空间中,…
根据C++11特性实现,基本上实现了同SharePtr同样的功能,有时间继续优化.之前一直以为引用计数是一个静态的int类型,实际上静态值是不可以的.之前项目中总是不太习惯使用智能指针.通过自实现的方式,充分了解了智能指针的实现. template <class T> class SmartPtr { public: SmartPtr(T * pointee=NULL) :_pointee(pointee),_useCount(NULL){ if(_pointee) { _useCount =…
0. 简介 在c++11标准中, 语言本身和标准库都增加了很多新内容. 里面的某些特性, 会让你在代码编写时更优雅. 我的环境: 系统: ubuntu16.04 g++版本: g++5.4.0 使用c++11特性编译时需加参数 -std=gnu++11  或  -std=c++11 1. 特性 1.1 nullptr NULL可以直接赋值给bool, int, float等类型(有些会编译警告), 而nullptr赋值给这些类型会编译报错. 比起NULL宏来说, nullptr常量更利于函数的重…
如果你使用的是 Dev-C++ ,忘记了在设置中包含 -std=c++11是无法让Dev支持C++11特性的,导致一些C++11 中的好用的函数可能会产⽣生编译⽆无法通过的情况. 这时候你有两个方法 1. 首先你得保证 gcc 版本 >= 4.8.1(只有 4.8.1 及以上的版本才能完全支持 C++11)2. 如果第1个条件能保证,那么就要对 DEV-C++ 设置了,具体步骤如下: 方法一:工具 -> 编译器选项->编译器 打上对勾 添加命令 -std=c++11 bingo~~~~~…
线程池概念 假设完成一项任务需要的时间=创建线程时间T1+线程执行任务时间T2+销毁线程时间T3,如果T1+T3的时间远大于T2,通常就可以考虑采取线程池来提高服务器的性能 thread pool就是线程的一种使用模式,一个线程池中维护着多个线程等待接收管理者分配的可并发执行的任务. 避免了处理短时间任务时创建与销毁线程的代价 既保证内核的充分利用,又能防止过度调度 可用线程数量应该取决于可用的并发处理器.处理器内核.内存.网络sockets的数量 线程池组成部分 线程池管理器(thread p…
#include <iostream> using namespace std; int main() { using cullptr = const unsigned long long *; //C++11新变量类型long long;constexpr unsigned long long * 为非法 typedef wchar_t * wchptr; /* 使用using或typedef声明的类型别名的变量实例初始化时,不同类型变量不可使用","写在同一行 如://…
原文标题:Ten C++11 Features Every C++ Developer Should Use 原文作者:Marius Bancila 原文地址:codeproject 备注:非直译,带个人感情色彩,有疑惑参看原文. This article discusses a series of features new to C++11 that all developers should learn and use. There are lots of new additions to…
以前都是在windows下用vs和cvi写C和C++代码,最近练习Linux下的使用. 编译的时候使用C++11的新特性比如auto 和 iteration特性都报不支持,后来在知乎看到答案需要在编译的时候申明一下使用c++11的特性,如下: g++ -std=c++ -o target.o source.cpp 需要申明-std=c++11. 另外,我使用的是centos,centos上g++默认版本是4.4.7,需要升级可以参考:centos 上更新g++版本…
昨天同事让帮忙写一小功能,才发现cocos2d-x 3.0 和 cocos2d-x 3.0rc0 差别还是相当大的. 发现Label这一个控件,3.0就比rc0版本多了一个创建函数,更为关键的是3.0内的Label锚点是在ccp(0.5,0.5),而一直3.0rc0是ccp(0,0). 累觉不爱.尽管cocos2d-x改变太快,兼容性一次次的暴露出不足,但是,总归是向好的方向进行.于是下载了3.0来玩玩~ cocos new 出新的项目之后,仔细阅读代码,才发现了一句3.0区别于2.0的代码:…
static_assert 声明 static_assert 声明在编译时测试软件断言,这与在运行时进行测试的其他断言机制不同. 如果断言失败,则编译也将失败,且系统将发出指定的错误消息. const int nValue = 3; static_assert(nValue < 10, "Error"); 这样编译时就会报出Error的错误提示信息. decltype作为操作符 用于返回表达式的数据类型. int Add(int a, int b) { return a+b; }…
ubuntu 16.04 自带gcc 5.4 支持c++11 ubuntu 18.04 自带gcc 7.3 支持c++14 查看编译器支持: c++11 c++14 c++17 c++11 feature nullptr/constexpr enum class auto/decltype for iteration initialize_list lamda template rvalue/move nullptr 以前的编译器实现,可能会把NULL定义为0.所以,当你有两个同名函数foo(i…
之前工作中开发/维护的模块大多都是 "远古代码",只能编译 C++98,很多 C++11 的特性都忘得差不多了,再回顾一下 右值引用&转移语义: 消除两个对象交互时不必要的对象拷贝,节省运算存储资源,提高效率: 能够更简洁明确地定义泛型函数. https://www.ibm.com/developerworks/cn/aix/library/1307_lisl_c11/ 委托构造函数: 在一个构造函数中调用另外一个构造函数,这就是委托的意味,不同的构造函数自己负责处理自己的不同…
这几天在看effective C++3rd,这本书算是比较经典的一本入门C++的书了.虽然年代比较久远书中讲的好多模式已经被的新特性取代了,但是从这些旧的模式中可以了解到一些C++新特性设计的初衷,也算是窥探到了C++发展的一角吧. 所以在此记录一下学习过程中那些被C++11新特性取代的旧模式吧(C++11后面的特性我还不是很了解,以后学到了再补充吧) 1.阻止编译器自动生成函数 编译器在一些情况下会为自定义类自动生成默认构造函数.拷贝构造函数和运算符,移动构造函数和运算符(C++11新特性).…
原文 | Kathleen 翻译 | 郑子铭 Visual Studio 17.1(Visual Studio 2022 Update 1)和 .NET SDK 6.0.200 包含 C# 11 的预览功能!您可以更新 Visual Studio 或下载最新的 .NET SDK 来获得这些功能. 查看帖子 Visual Studio 2022 17.1 现已推出!了解 Visual Studio 中的新增功能和发布 .NET 7 Preview 1 的帖子以了解更多 .NET 7 预览功能. 设…
为了给同事分享C++11标准,需要一个演示C++11的编程环境.VS2013太大,安装起来不太方便.由于电脑上之前有安装codeblock,于是升级MinGW.去MinGW官网http://www.mingw.org/上去下载一个安装程序,安装完成后,打开安装管理器MinGW Installer,把Basci Setup里边的全都安装完.然后设置windows里的环境变量,打开codeblock的配置,配置编译器和调试环境.如下图. 然后创建一个C++工程,编译.代码如下:  auto是C++1…
decltype简介 我们之前使用的typeid运算符来查询一个变量的类型,这种类型查询在运行时进行.RTTI机制为每一个类型产生一个type_info类型的数据,而typeid查询返回的变量相应type_info数据,通过name成员函数返回类型的名称.同时在C++11中typeid还提供了hash_code这个成员函数,用于返回类型的唯一哈希值.RTTI会导致运行时效率降低,且在泛型编程中,我们更需要的是编译时就要确定类型,RTTI并无法满足这样的要求.编译时类型推导的出现正是为了泛型编程,…
0.  placeholder 头文件:<functional> namespace: placeholder placeholder 就是一堆帮助bind占参数位置的东西,名字分别为 _1, _2, _3, ..., _N. 它的作用是告诉编译器,这个参数我目前用它来占个坑,以后填. 1. std::function 为了讲丑陋的函数指针简化,也为了提供现代语言一般都有的闭包,C++ 11提供了std::function类型来表示函数,同时也可以用来表示lambda 表达式(等同于Objec…
前言 本文的内容已经不新鲜了.关于auto,翻来覆去被人知道的都是这些东西,本文并没有提出新颖的auto用法. 本人原是痛恨博客一篇篇都是copy而来缺乏新意的探索,当然,本文不是copy而来,但发布这样一篇大家皆知的文章心里甚是惶恐. 本文对auto的内容加以整理,权当是自己的复习笔记了. C++98 auto 早在C++98标准中就存在了auto关键字,那时的auto用于声明变量为自动变量,自动变量意为拥有自动的生命期,这是多余的,因为就算不使用auto声明,变量依旧拥有自动的生命期: in…
JDK 11 总共包含 17 个新的 JEP ,分别为: 181: Nest-Based Access Control(基于嵌套的访问控制) 309: Dynamic Class-File Constants(动态类文件常量) 315: Improve Aarch64 Intrinsics(改进 Aarch64 Intrinsics) 318: Epsilon: A No-Op Garbage Collector(Epsilon — 一个无操作的垃圾收集器) 320: Remove the Ja…
Eigen:3.1 3.0 Ceres:No Sophus: Sophus支不支持Windows编译?官网写的是通过了Windows的编译的 linux, os x:  windows:  code coverage:  Sophus Overview This is a c++ implementation of Lie groups commonly used for 2d and 3d geometric problems (i.e. for Computer Vision or Robo…
1.下载gcc最新的源码包  2.解压缩 tar -xf gcc-4.9.1.tar.gz 3. cd gcc-4.9.1 4.运行download_prerequisites脚本, ./contrib/download_prerequisites ,这个脚本会自动帮你下载所需要的依赖文件和库 5.建立输出目录,将所有的中间文件都放到该目录, cd gcc_temp 6. 运行  7. make & make install ===================================…
#include <list> #include <iostream> int main(){ list<int> lst; for(list<int>::iterator itor=lst.begin();itor!=lst.end();itor++){ cout<<(*itor)<<endl; //do something } } for(auto &node:lst){ cout<<node<<e…
1.点击设置 点击CodeRunner的小齿轮,点击configure extension settings 2.点击映射 点击executor map中的Edit in settings.json 3.粘贴代码 粘贴如下代码,按下command + s 进行保存 { "code-runner.runInTerminal": true, "C_Cpp.default.cppStandard": "c++11", "code-runner…
本文摘录柳神笔记:   除了像C语⾔的for语句 for (i = 0; i < arr.size(); i++) 这样,C++11标准还为C++添加了⼀种新的 for 循环⽅ 式,叫做基于范围(range-based)的for循环,这在遍历数组中的每⼀个元素时使⽤会⽐较简便-⽐如 想要输出数组 arr 中的每⼀个值,可以使⽤如下的⽅式输出: i 变量从数组的第⼀个元素开始,不断执⾏循环, i 依次表示数组中的每⼀个元素-注意,使⽤ int i 的⽅式定义时,该语句只能⽤来输出数组中元素的值,⽽…
1.点击工具选择编译选项 2.在编译时加入以下命令点击之后再将-std=c++11加入,点击确定就ok了…
什么是左值,什么是右值 常见的误区有 = 左边的是左值,右边的是右值. 左值:具有存储性质的对象,即lvalue对象,是指要实际占用内存空间.有内存地址的那些实体对象,例如:变量(variables).函数.函数指针等. 右值:相比较于lvalue就是所谓的没有存储性质的对象, 也就是临时对象. 在c++中,临时对象不能作为左值,但可以作为常量引用const & ++i = 3; // ok i++ = 3; // error C2106: "=": 左操作数必须为左值 ++i…