C++11
文章平均质量分 84
fjb2080
这个作者很懒,什么都没留下…
展开
-
C++ 11右值引用
转自:http://www.cnblogs.com/hujian/archive/2012/02/13/2348621.htmlC++ 11中引入的一个非常重要的概念就是右值引用。理解右值引用是学习“移动语义”(move semantics)的基础。而要理解右值引用,就必须先区分左值与右值。 对左值和右值的一个最常见的误解是:等号左边的就是左值,等号右边的就是右值。转载 2013-11-05 13:34:39 · 3168 阅读 · 0 评论 -
C++ 11 tuple & 可变参数模板
转自:http://www.cnblogs.com/hujian/archive/2012/02/23/2364190.html C++ 11中引入的tuple是一个N元组。它相当于有N个成员的结构体,只不过这个结构体的成员都是匿名的。tuple中有两个特殊的函数,一个是head(),用于获取第一个成员的值,另一个是tail(),用于获取剩下所有成员的值,tail()本身又是一个转载 2013-11-05 13:53:45 · 5021 阅读 · 0 评论 -
C++ 11语法甜点1
转自:http://www.cnblogs.com/hujian/archive/2012/02/20/2358853.htmlC++ 11中引入了许多简化编程工作的语法上的新特性,我们暂且美其名曰“语法甜点”。下面一一进行介绍。 语法甜点1:序列for循环 序列for循环是一种简化的for循环,可用于遍历一组序列,包括各种容器、string、数组、初始转载 2013-11-05 13:59:07 · 3520 阅读 · 0 评论 -
C++ 11语法甜点2
转自:http://www.cnblogs.com/hujian/archive/2012/12/07/2807941.html 语法甜点11:非成员的begin和end 在C++ 03中,标准容器都提供了begin和end成员函数,但对于普通数组,则只能使用不同的写法。比如:1 vectorint> v; 2 int a[100]; 3 sort(v.b转载 2013-11-05 14:11:35 · 4060 阅读 · 0 评论 -
关于编译Lambda时报告返回的为void的错误
a lambda that has been specified to have a void return type cannot return a value原创 2013-10-10 09:31:26 · 5201 阅读 · 0 评论 -
C++11 标准新特性:Defaulted 和 Deleted 函数
本文转自:http://www.ibm.com/developerworks/cn/aix/library/1212_lufang_c11new/index.html简介: 本文将介绍 C++11 标准的两个新特性:defaulted 和 deleted 函数。对于 defaulted 函数,编译器会为其自动生成默认的函数定义体,从而获得更高的代码执行效率,也可免除程序员转载 2012-12-26 10:25:40 · 959 阅读 · 0 评论 -
C++11 中值得关注的几大变化(详解)
转自:http://coolshell.cn/articles/5265.html源文章来自前C++标准委员会的 Danny Kalev 的 The Biggest Changes in C++11 (and Why You Should Care),赖勇浩做了一个中文翻译在这里。所以,我就不翻译了,我在这里仅对文中提到的这些变化“追问为什么要引入这些变化”的一个探讨,只有知道转载 2012-06-04 13:44:31 · 983 阅读 · 0 评论 -
C++11 FAQ中文版:Lambda表达式
二26Year 2011陈 良乔C++11 FAQLambdas(译注:目前支持lambda的gcc编译器版本为4.5,其它详细的编译器对于C++11新特性的支持请参考http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport)Lambda表达式是一种描述函数对象的机制,它的主要应用是描述某些具有简单行为的函数(译注:Lambd转载 2012-05-02 12:20:51 · 2769 阅读 · 0 评论 -
C++11 FAQ中文版:继承的构造函数
三2Year 2011陈 良乔C++11 FAQ继承的构造函数人们有时会对类成员函数或成员变量的作用域问题感到困惑,尤其是,当基类与派生类的同名成员不在同一个作用域内时:struct B { void f(double); }; struct D : B { void f(int); }; B b; b.f(4转载 2012-05-02 11:45:05 · 2879 阅读 · 0 评论 -
C++11 FAQ中文版:返回值类型后置语法
二28Year 2011陈 良乔C++11 FAQ返回类型后置语法考虑下面这段代码:template??? mul(T x, U y){ return x*y;}函数mul()的返回类型要怎么写呢?当然,是“x*y类型”,但是这并不是一个数据类型,我们如何才能一开始就得到它的真实数据类型呢?在初步了解C++0x之后,你可能一开始想到使用decltype来推断转载 2012-05-02 11:05:53 · 4852 阅读 · 0 评论 -
C++11 FAQ中文版:委托构造函数(Delegating constructors)
二25Year 2011陈 良乔C++11 FAQ委托构造函数(Delegating constructors)在C++98中,如果你想让两个构造函数完成相似的事情,可以实现两个完全相同的构造函数,或者是实现一个init()函数,两个构造函数都调用这个init()函数。例如:class X { int a; // 实现一个初始化函数转载 2012-05-02 10:45:40 · 6333 阅读 · 0 评论 -
C++11 FAQ中文版:decltype – 推断表达式的数据类型
C++11 FAQ中文版:decltype – 推断表达式的数据类型二24Year 2011陈 良乔C++11 FAQdecltype – 表达式的数据类型decltype(E)是一个标识符或者表达式的推断数据类型(“declared type”),它可以用在变量声明中作为变量的数据类型。例如: void f(const vector& a, vector& b){转载 2012-05-02 10:36:18 · 1734 阅读 · 0 评论 -
C++11 FAQ中文版:常量表达式(constexpr)
二26Year 2011陈 良乔C++11 FAQ常量表达式(constexpr) — 一般化的受保证的常量表达式 常量表达式机制是为了:提供了更多的通用的值不发生变化的表达式允许用户自定义的类型成为常量表达式提供了一种保证在编译期完成初始化的方法(可以在编译时期执行某些函数调用)考虑下面这段代码: enum Flags { good=0, fail=1,转载 2012-05-02 10:28:20 · 6978 阅读 · 0 评论 -
C++11 FAQ中文版:auto – 从初始化中推断数据类型
Year 2011陈 良乔C++11 FAQauto –从初始化中推断数据类型考虑下面的代码:auto x = 7;这里的变量x被7初始化,所以x的实际数据类型是int。通常,我们可以这样写:auto x = expression;这样,这个表达式计算结果的数据类型就是变量x的数据类型。当我们很难准确地推断一个变量的数据类型,或者是这个变量的数据类型难于书写时,我转载 2012-05-02 10:23:58 · 1059 阅读 · 0 评论 -
C++:智能指针-TR1的shared_ptr和weak_ptr使用介绍
<br />shared_ptr: Based on a reference counter model, with the counter incremented each time a new shared pointer object points to the resource, and decremented when the object's destructor executes; when the counter gets to 0, the resource is releas转载 2011-02-11 16:44:00 · 5277 阅读 · 0 评论 -
C++11 FAQ中文版:枚举类——具有类域和强类型的枚举
二23Year 2011陈 良乔C++11 FAQ枚举类——具有类域和强类型的枚举枚举类(“新的枚举”,“强类型的枚举”)主要用来解决传统的C++枚举的三个问题:可转换的枚举类型默认被转换为int类型,在那些不需要枚举类型表现为int类型的情况下,这可能会导致错误发生可转换的枚举会使得它的所有枚举值在其周围的代码范围内都是可见的,则可能会导致名字冲突不可以指定枚举的底层数据转载 2012-05-02 10:24:35 · 4163 阅读 · 0 评论 -
C++11 FAQ中文版:控制默认函数——默认或者禁用
七9Year 2011陈 良乔C++11 FAQ控制默认函数——默认或者禁用控制默认函数——默认或者禁用(译注:我们都知道,在我们没有显式定义类的复制构造函数和赋值操作符的情况下,便编译器会为我们生成默认的复制构造函数和赋值操作符,以内存复制的形式完成对象的复制。虽然这种机制可以为我们节省很多编写复制构造函数和赋值操作符的时间,但是在某些情况下,比如我们不希望对象被复制,这种机转载 2012-05-02 10:39:09 · 2022 阅读 · 0 评论 -
C++11 中的线程、锁和条件变量
转自:http://blog.jobbole.com/44409/?utm_source=rss&utm_medium=rss&utm_campaign=c11-%25e7%25ba%25bf%25e7%25a8%258b%25e9%2594%2581%25e5%2592%258c%25e6%259d%25a1%25e4%25bb%25b6%25e5%258f%2598%25e9%2587%258转载 2013-07-31 17:08:47 · 5366 阅读 · 0 评论 -
C++开发者都应该使用的10个C++11特性
转自:http://blog.jobbole.com/44015/?utm_source=rss&utm_medium=rss&utm_campaign=c%25e5%25bc%2580%25e5%258f%2591%25e8%2580%2585%25e9%2583%25bd%25e5%25ba%2594%25e8%25af%25a5%25e4%25bd%25bf%25e7%2594%25a8%2转载 2013-07-30 09:48:39 · 3414 阅读 · 0 评论 -
Visual Studio 2013预览版中的 C++11 新特性
转自:http://blog.jobbole.com/44165/?utm_source=rss&utm_medium=rss&utm_campaign=vs2013%25e4%25b8%25ad%25e7%259a%2584c11%25e6%2596%25b0%25e7%2589%25b9%25e6%2580%25a7原文出处: codeproject 译文出处: o转载 2013-07-30 09:47:36 · 4377 阅读 · 0 评论 -
C++11 标准新特性: 右值引用与转移语义
转自:http://www.ibm.com/developerworks/cn/aix/library/1307_lisl_c11/index.html?ca=dat-李 胜利, 高级开发工程师, IBM简介: C++ 的新标准 C++11 已经发布一段时间了。本文介绍了新标准中的一个特性,右值引用和转移语义。这个特性能够使代码更加简洁高效。新特性的目的右值转载 2013-07-12 10:15:03 · 2953 阅读 · 0 评论 -
C++11的线程、锁和条件变量
转自:http://www.codeproject.com/Articles/598695/Cplusplus11-threads-locks-and-condition-variablesThreadsThe std::thread class represents a thread of execution and is available in the hea转载 2013-05-29 09:58:27 · 2049 阅读 · 0 评论 -
C++11 FAQ中文版:weak_ptr
二25Year 2011陈 良乔C++11 FAQweak_ptr弱指针(weak pointer)经常被解释为用来打破使用shared_ptr管理的数据结构中循环(?)。但是我认为,将weak_ptr看成是指向具有下列特征的对象的指针更好一些。只有当对象存在的时候,你才需要对其进行访问并且它可能被其他人删除释放并且在最后一次使用之后调用其析构函数(通常用于释放那些不具名的转载 2012-05-02 13:39:03 · 4016 阅读 · 0 评论 -
C++11 FAQ中文版:unique_ptr
二27Year 2011陈 良乔C++11 FAQunique_ptrunique_ptr(定义在中)提供了一种严格的语义上的所有权o 拥有它所指向的对象o 无法进行复制构造,也无法进行复制赋值操作(译注:也就是对其无法进行复制,我们无法得到指向同一个对象的两个unique_ptr),但是可以进行移动构造和移动赋值操作o 保存指向某个对象的指针,当它本身被删除释放的转载 2012-05-02 13:35:36 · 5482 阅读 · 0 评论 -
C++11 FAQ中文版:共享资源的智能指针——shared_ptr
三13Year 2011陈 良乔C++11 FAQ共享资源的智能指针——shared_ptrshared_ptr被用来表示共享的拥有权。也就是说,当两段代码都需要访问一些数据,而它们又都没有独占该数据的所有权(从某种意义上来说就是该段代码负责销毁该对象)。这是我们就需要shared_ptr。shared_ptr是一种计数指针。当引用计数变为0时,shared_ptr所指向的对象就会转载 2012-05-02 13:35:09 · 3714 阅读 · 0 评论 -
C++11 FAQ中文版:std::function 和 std::bind
三2Year 2011陈 良乔C++11 FAQstd::function 和 std::bind标准库函数bind()和function()定义于头文件中(该头文件还包括许多其他函数对象),用于处理函数及函数参数。bind()接受一个函数(或者函数对象,或者任何你可以通过”(…)”符号调用的事物),生成一个其有某一个或多个函数参数被“绑定”或重新组织的函数对象。(译注:顾名思义,转载 2012-05-02 13:14:46 · 26138 阅读 · 2 评论 -
C++11 FAQ中文版:array
二27Year 2011陈 良乔C++11 FAQarraystd::array是一个支持随机访问且大小(size)固定的容器(译注:可以认为是一个紧缩版的vector吧)。它有如下特点:不预留多余空间,只分配必须空间(译注:size() == capacity())。可以使用初始化表(initializer list)的方式进行初始化。保存了自己的size信息。不支持隐式转载 2012-05-02 13:14:18 · 4517 阅读 · 0 评论 -
C++11 FAQ中文版:类成员的内部初始化
三1Year 2011陈 良乔C++11 FAQ类内部成员的初始化在C++98标准里,只有static const声明的整型成员能在类内部初始化,并且初始化值必须是常量表达式。这些限制确保了初始化操作可以在编译时期进行。例如: int var = 7; class X { static const int m1 = 7; // 正确转载 2012-05-02 11:34:13 · 10140 阅读 · 1 评论 -
简单使用序列for循环语句
代码:#include #include using namespace std;int main(int argc, char *argv[]){ vector a = {0, 2, 5, 9, 10, 33, 22, 12}; for(auto x: a) cout<<x<<" "; cout<<endl; for(aut原创 2012-05-02 11:01:31 · 1801 阅读 · 0 评论 -
C++11 FAQ中文版:序列for循环语句
二28Year 2011陈 良乔C++11 FAQ序列for循环语句序列for循环语句允许重复遍历一组序列,而这组序列可以是任何可以重复遍历的序列,如由begin()和end()函数定义的STL序列。所有的标准容器都可用作这种序列,同时它也同样可以是std::string,初始化列表(list),数组,以及任何由begin()和end()函数定义的序列,例如输入流。这里是一个序列f转载 2012-05-02 10:55:04 · 3736 阅读 · 0 评论 -
c++11中的tuple(元组)
转自:http://www.cnblogs.com/qicosmos/p/3318070.html这次要讲的内容是:c++11中的tuple(元组)。tuple看似简单,其实它是简约而不简单,可以说它是c++11中一个既简单又复杂的东东,关于它简单的一面是它很容易使用,复杂的一面是它内部隐藏了太多细节,要揭开它神秘的面纱时又比较困难。 tuple是一个固定大小的不同类型值的集合,转载 2013-11-13 09:36:58 · 71820 阅读 · 1 评论