怎样配置环境可以参考 他人的博客可是这篇博客中没有提到 C++11 标准的问题, 而我经常使用 C++11 的一些特性, 比如移动语义, 移动构造什么的, 这就蛋疼了。google 了相关内容, 可是一无所获, SO 里也没有, 直到我在贴吧看到了一个贴 怎样支持 c11于是我就照猫画虎, 把编译命...
分类:
编程语言 时间:
2015-02-17 12:52:34
阅读次数:
210
C++ 11中引入的右值引用正好可用于标识一个非常量右值。C++ 11中用&表示左值引用,用&&表示右值引用,如:int &&a = 10右值引用根据其修饰符的不同,也可以分为非常量右值引用和常量右值引用。C++ 11中引入的一个非常重要的概念就是右值引用。理解右值引用是学习“移动语义”(move ...
分类:
其他好文 时间:
2015-01-08 19:58:59
阅读次数:
161
共分三篇,这是第一篇。另外两篇,看完这个你还不理解右值引用和移动构造 你就可以来咬我(上),看完这个你还不理解右值引用和移动构造 你就可以来咬我(上)。
C++ 右值引用 & 新特性
C++ 11中引入的一个非常重要的概念就是右值引用。理解右值引用是学习“移动语义”(move
semantics)的基础。而要理解右值引用,就必须先区分左值与右值。...
分类:
移动开发 时间:
2015-01-02 16:07:31
阅读次数:
239
新接触 Rust 时你很容易在编译代码时看到编译器给出的各种类似于“值已移动到此处”的报错,这就涉及到 Rust 的移动语义,是语言中的重要概念。那么移动语义意味着什么呢?Rust 的移动语义是为 Rust 的所有权这个概念服务的。没有移动语义所有权就无从谈起;Rust 的生命期概念又完全是为所有权...
分类:
移动开发 时间:
2014-12-17 18:20:16
阅读次数:
227
std::move和std::forward是C++0x中新增的标准库函数,分别用于实现移动语义和完美转发。
下面让我们分析一下这两个函数在gcc4.6中的具体实现。
预备知识
引用折叠规则:
X& + & => X&
X&& + & => X&
X& + && => X&
X&& + && => X&&
函数模板参数推导规则(右值引用参数部分):
当函数模板的模板参数为...
分类:
编程语言 时间:
2014-11-25 18:30:49
阅读次数:
1005
上节我们提出了右值引用,可以用来区分右值,那么这有什么用处? 问题来源 我们先看一个C++中被人诟病已久的问题: 我把某文件的内容读取到vector中,用函数如何封装? 大部分人的做法是: void readFile(const string &filename, vector &words)
{ ...
分类:
移动开发 时间:
2014-10-17 00:49:13
阅读次数:
352
C++11支持移动语义。一:为什么需要移动语义和什么是移动语义我们先来看看C++11之前的复制过程。假设有下列代码:vector v1(1000000);//v1存放着100W个string,假设每个string长度为1000vector v2(v1);//使用v1初始化v2vector和strin...
分类:
编程语言 时间:
2014-09-24 19:39:38
阅读次数:
1895
C++引用现在分为左值引用(能取得其地址)和右值引用(不能取得其地址)。其实很好理解,左值引用中的左值一般指的是出现在等号左边的值(带名称的变量,带*号的指针等一类的数据),程序能对这样的左值进行引用获得其地址;右值引用中的右值一般指的就是出现在等号右边的值(右值引用:常量、表达式、函数非左值引用的...
分类:
移动开发 时间:
2014-09-24 15:50:57
阅读次数:
258
1. 线程的移动语义实现
基于前面几章介绍的移动语义,我们用它来实现线程。
#include
#include
#include
#include
#include
int main()
{
std::vector workers;
for (int i = 0; i < 5; i++) {
auto t = std::thread([i]()
{
std::...
分类:
移动开发 时间:
2014-08-09 11:36:27
阅读次数:
276
1. 按值传递
什么是按值传递?
当一个函数通过值的方式获取它的参数时,就包含有一个拷贝的动作。编译器知道如何去进行拷贝。如果参数是自定义类型,则我们还需要提供拷贝构造函数,或者赋值运算符来进行深拷贝。然而,拷贝是需要代价的。在我们使用STL容器时,就存在大量的拷贝代价。当按值传递参数时,会生产临时对象,浪费宝贵的CPU以及内存资源。
需要找到一个减少不必要拷贝的方法。移动语义就...
分类:
移动开发 时间:
2014-08-08 02:04:05
阅读次数:
417