右值系列之六:向前,向前!

原文来自:http://cpp-next.com/archive/2009/12/onward-forward/ 除了提供转移语义,右值引用的另一个主要用途是解决“完美转发”。在这里,“转发”的指将一个泛型函数的实参转发至另一个函数而不会拒绝掉第二个参数可接受的任何参数,也

2011-08-27 11:52:31

阅读数 1987

评论数 0

右值系列之五:异常安全的转移

原文来自:http://cpp-next.com/archive/2009/10/exceptionally-moving/ 欢迎来到关于C++中的高效值类型的系列文章中的第五篇。在上一篇中,我们停留在对转移赋值最优实现的不断找寻中。今天,我们将要找到一条穿过这个“转移城市

2011-08-25 20:22:03

阅读数 1948

评论数 0

右值系列之五:异常安全的转移

原文来自:http://cpp-next.com/archive/2009/10/exceptionally-moving/ 欢迎来到关于C++中的高效值类型的系列文章中的第五篇。在上一篇中,我们停留在对转移赋值最优实现的不断找寻中。今天,我们将要找到一条穿过这个“转移城市

2011-08-25 17:33:37

阅读数 25

评论数 0

右值系列之四:再论赋值

第四篇:再论赋值 原文来自:http://cpp-next.com/archive/2009/09/your-next-assignment/ 这是关于C++中的高效值类型的系列文章中的第四篇。在上一篇中,我们讨论了如何处理右值引用函数参数并介绍了只可转移的类型。这次

2011-08-03 11:18:42

阅读数 2143

评论数 0

右值系列之三:你的下一步转移

第三篇:你的下一步转移这是关于C++中的高效值类型的系列文章中的第三篇。在上一篇中,我们介绍了C++0x的右值引用,描述了如何建立一个可转移类型,并示范了如何显式地利用可转移性。现在我们来看看转移优化的其它一些机会,开拓一些关于转移方面的新领域。复活一个右值在开始讨论进一步的优化

2011-07-23 14:38:01

阅读数 1984

评论数 0

右值系列之二:用右值引用来转移

第二篇:用右值引用来转移这是关于C++中的高效值类型的系列文章中的第二篇。在上一篇中,我们讨论了复制省略如何被用来消除可能发生的多次复制操作。复制省略是透明的,在看起来非常普通的代码中自动发生的,几乎没有任何缺点。好消息已经够多了;下面看看坏的消息:复制省略不是标准强制要求的,因

2011-07-22 14:45:03

阅读数 2642

评论数 0

右值系列之一:想要快?就传值

推荐有关右值的一系列文章,共六篇。第一篇:想要快?就传值

2011-07-19 23:27:22

阅读数 2952

评论数 1

"The Boost C++ Libraries" from Boris Schäling

<br />"The Boost C++ Libraries" 是德国朋友 Boris Schäling 的一本关于 Boost 库的入门读物,写得很不错,值得一读。<br /> <br />原书为德文版,主页:http://www.high...

2010-08-17 16:07:00

阅读数 4113

评论数 1

昨天终于把《C++ Template Metaprogramming》看完了第一遍

本来想等侯捷、荣耀两位老师的中译本出来以后读中文的,对于两位老师的译作质量,完全可以放心。可惜等了许久,迟迟不见出来,在china-pub.com上很多读者已经等得不耐烦了。我也是如此,于是从去年11月底开始读这本书的E文电子版,的确有点难度,经过近两个月的努力,总算读完了第一遍,大开眼界了。这样...

2007-01-31 17:38:00

阅读数 6810

评论数 6

学习C++模板元编程(7)

 到目前为止,我们还没有实现一个完整的编译期二分树,不过马上就会有了。紧接着上一篇的那道习题,是一道要求实现二分查找算法的题目,题目要求写出一个算法元函数binary_tree_search,在一个由binary_tree_inserter生成的treetypedef mpl::copy< ...

2006-12-24 01:09:00

阅读数 5408

评论数 2

学习C++模板元编程(6)

 接下来是第六章的一道习题,要求实现一个binary_tree_inserter,以使用mpl::copy算法从其它序列生成一棵二分查找树(Binary Search Tree,即满足以下条件的一种二分树:左子树所有元素小于根,右子树所有元素大于根,且左右子树全都是二分查找树)。习题中给出的测试代...

2006-12-22 16:00:00

阅读数 3641

评论数 0

学习C++模板元编程(5)

 这两周学习了《C++ TMP》第五、六章,是关于TMP的序列(容器)、迭代器和算法。做了不少习题,其中最有意思的(也是花了我最多时间的)习题是用TMP实现二分查找树(Binary Search Tree)。从第五章的一道关于二分树的习题开始。题目给出一个编译期的二分树数据结构,例如:   typ...

2006-12-21 23:10:00

阅读数 3674

评论数 0

学习C++模板元编程(4)

 《C++ Template Metaprogramming》的第四章提到了缓式评估(lazy evaluation)和短路行为(short-circuit behavior)两个概念,我编写了一个测试这两种行为的程序,但无法通过编译,还以为是编译器的问题,后来经过仔细思考,才发现是自己弄错了。我...

2006-12-07 14:58:00

阅读数 3781

评论数 1

学习C++模板元编程(3)

 《C++ Template Metaprogramming》的第三章举了两个例子,一个是量纲分析,另一个是高级元函数twice。量纲分析的实现比较清楚,对我来说是大开了一回眼界;但是对于高级元函数twice的实现,我觉得弄得有点太复杂了。先看看twice的定义:twice(f, x) := f(...

2006-12-05 20:50:00

阅读数 4027

评论数 1

学习C++模板元编程(2)

 再看一道简单一些的习题:写一个三个参数的元函数replace_type,其中第一个参数c为任意的组合类型,该元函数将c中出现的所有x类型以y类型替换掉。例如: typedef replace_type::type t1; //...

2006-12-05 12:04:00

阅读数 4553

评论数 3

学习C++模板元编程(1)

   TAOCP没看多久,觉得里面的数学知识太深了,离开学校多年,很多基础知识已记不起来了,学起来有点累,所以结束了TAOCP的学习,转到了《C++ Template Metaprogramming》。刚看完书中的第二章,关于 Type traits的,习题中有一条比较有趣,就是模仿cdecl命令...

2006-12-03 21:44:00

阅读数 4285

评论数 0

Gray码的生成

 近期开始学习TAOCP第4卷第2册,书中一开始就介绍了Gray二进制码,觉得非常有趣,就参照书中的算法写一个小程序来生成Gray码。开始之前,我们先来看看什么是Gray二进制码。Gray二进制码是以一种简单和规则的方式来排列所有2^n个n位的二进制串,即每次仅改变一个二进制位。例如,对于n=4,...

2006-10-28 17:15:00

阅读数 4014

评论数 0

强制使用错误返回码

强制使用错误返回码Guy Peleg摘要:如何强迫函数的调用者必须接受并使用函数返回的错误代码。 Andrei Alexandrescu在他的文章“Three Ideas” (http://www.ddj.com/dept/cpp/184401917)中描述了一个“强制使用错误返回码”的框架,用以...

2006-08-10 11:22:00

阅读数 2381

评论数 8

用STL实现DFS/BFS算法——使用boost.Multi_Index容器

用STL实现DFS/BFS算法——使用boost.Multi_Index容器花了几天时间熟悉了一下boost的Multi_Index容器,觉得确实是个很不错的东西。现在准备用它来替换DFS/BFS算法中的list容器以及查重所用的set或hash_set容器。在前面的DFS/BFS版本中,我们使用...

2006-06-09 00:31:00

阅读数 4608

评论数 1

源代码BFS_DFS_v1.6.hpp

这次又有一点小的修改,主要是关于StateSpaceTreeSearch的第二个模板参数的。它是用于指定选用BFS还是DFS,原来我是让使用者选择BFSInserter和DFSInserter两者之一。后来想想,好象不应该让用户看到这两个结点插入策略,毕竟用户并不关心这一点。用户关心的仅是如何在B...

2006-06-07 15:50:00

阅读数 2037

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭