http://jxq.me/2012/06/06/%E8%AF%91%E8%AF%A6%E8%A7%A3c%E5%8F%B3%E5%80%BC%E5%BC%95%E7%94%A8/#thbeckerC++0x标准出来很长时间了,引入了很多牛逼的特性[1]。其中一个便是右值引用,Thomas Beck...
分类:
编程语言 时间:
2014-09-20 23:44:19
阅读次数:
354
# 转自 IBM 编译器中国开发团队的《C++11中的string - atoi/itoa》 在C++11中,由于右值引用的引入,常为人所诟病std::string的性能问题得到了很大的改善。另外一方面,我们也可以看到新语言为std::string类增加了...
分类:
编程语言 时间:
2014-09-19 15:48:45
阅读次数:
311
16.47 编写你自己版本的翻转函数,通过调用接受左值和右值引用参数的函数来测试它。#include#include#includeusing namespace std;template int compare(const T &a ,const T &b){ if(aauto sum(T ...
分类:
其他好文 时间:
2014-09-01 22:21:03
阅读次数:
206
这是 thread 的construct定义:default (1)thread() noexcept;initialization (2)template explicit thread (Fn&& fn, Args&&... args);copy [deleted] (3)thread (con...
分类:
编程语言 时间:
2014-08-19 16:23:34
阅读次数:
304
1、右值引用引入的背景
临时对象的产生和拷贝所带来的效率折损,一直是C++所为人诟病的问题。但是C++标准允许编译器对于临时对象的产生具有完全的自由度,从而发展出了Copy Elision、RVO(包括NRVO)等编译器优化技术,它们可以防止某些情况下临时对象产生和拷贝。下面简单地介绍一下Copy Elision、RVO,对此不感兴趣的可以直接跳过:
(1) Copy Elision
Co...
分类:
移动开发 时间:
2014-08-16 21:08:01
阅读次数:
247
问题背景[cpp]view plaincopy#includeusingnamespacestd;vectordoubleValues(constvector&v){vectornew_values(v.size());for(autoitr=new_values.begin(),end_itr=n...
分类:
编程语言 时间:
2014-08-13 00:45:54
阅读次数:
266
1. 按值传递
什么是按值传递?
当一个函数通过值的方式获取它的参数时,就包含有一个拷贝的动作。编译器知道如何去进行拷贝。如果参数是自定义类型,则我们还需要提供拷贝构造函数,或者赋值运算符来进行深拷贝。然而,拷贝是需要代价的。在我们使用STL容器时,就存在大量的拷贝代价。当按值传递参数时,会生产临时对象,浪费宝贵的CPU以及内存资源。
需要找到一个减少不必要拷贝的方法。移动语义就...
分类:
移动开发 时间:
2014-08-08 02:04:05
阅读次数:
417
From:深入理解C++11Assignment:Benifit: 1. 用于移动语义,提高效率。2. 函数转发
分类:
其他好文 时间:
2014-08-05 22:17:30
阅读次数:
198
本文摘自:http://adamcavendish.is-programmer.com/posts/38190.htm 引言众所周知,C++11 的新特性中有一个非常重要的特性,那就是 rvalue reference ,右值引用。 引入它的一个非常重要的原因是因为在 C++ 中,常常右值,通俗地讲...
分类:
编程语言 时间:
2014-07-06 16:12:12
阅读次数:
293