自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

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

2011-08-27 11:52:31 2297 0

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

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

2011-08-25 20:22:03 2239 0

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

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

2011-08-25 17:33:37 317 0

翻译 右值系列之四:再论赋值

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

2011-08-03 11:18:42 2454 0

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

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

2011-07-23 14:38:01 2274 0

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

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

2011-07-22 14:45:03 2949 0

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

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

2011-07-19 23:27:22 3252 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 4417 1

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

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

2007-01-31 17:38:00 7118 5

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

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

2006-12-24 01:09:00 5707 2

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

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

2006-12-22 16:00:00 3930 0

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

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

2006-12-21 23:10:00 3980 0

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

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

2006-12-07 14:58:00 4079 1

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

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

2006-12-05 20:50:00 4352 1

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

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

2006-12-05 12:04:00 4841 2

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

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

2006-12-03 21:44:00 4576 0

原创 Gray码的生成

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

2006-10-28 17:15:00 4341 0

翻译 强制使用错误返回码

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

2006-08-10 11:22:00 2732 7

原创 用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 4944 1

原创 源代码BFS_DFS_v1.6.hpp

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

2006-06-07 15:50:00 2329 0

原创 用STL实现DFS/BFS算法——基于策略的类设计

用STL实现DFS/BFS算法——基于策略的类设计在引入boost.Multi_index容器之前,我想有必要先整理一下DFS/BFS的代码。修改是出于以下几方面原因,其中之一是:近期拜读了Andrei Alexandrescu的《Modern C++ Design》,深受启发,书中的第一章讲述了...

2006-06-05 00:59:00 2339 0

原创 源程序BFS_DFS_v1.hpp

在引入boost.Multi_index容器,我想有必要先整理一下DFS/BFS的代码。主要的修改是,不再使用queue容器和stack容器,而用list容器来替换它们。原因是,queue和stack容器会把已搜索过的结点删除掉,而我们如果要在容器内进行查重的话,就必须保留所有结点,所以不能使用这...

2006-06-03 16:33:00 1898 0

原创 推箱子源程序v1.1

回头看了看推箱子的源代码,里面有不少嵌套的for循环用于查找满足某个条件的位置,或者是对其进行处理。过多的嵌套for循环似乎与STL的精神相悖,于是想是否可以用迭代器和STL算法来替换这些嵌套的循环。办法是:增加一个迭代器类SSiterator,保存某个SokoState对象中map_成员的位置,...

2006-06-01 18:41:00 2648 2

原创 推箱子源程序v1

前面文章中贴出的代码比较零乱,这里把完整的代码贴出来,方便大家参考。共分三个文件: // SokoState_v1.h -- SokoState类的头文件,第一版#ifndef _SOKOSTATE_H#define _SOKOSTATE_H#include #include #include u...

2006-05-31 16:09:00 2758 3

原创 用STL实现DFS/BFS算法——推箱子游戏(2)

用STL实现DFS/BFS算法——推箱子游戏(2)前面,我们给出了SokoState的输入输出操作符。接下来,我们来看看isTarget()成员函数。它很简单,我们只要检查一下是否每个箱子都已经被移动到了目的地就行了,即检查一下每个格子的isDest()状态与isBox()状态是否相同(同时为真或...

2006-05-31 14:50:00 3900 1

原创 用STL实现DFS/BFS算法——推箱子游戏(1)

用STL实现DFS/BFS算法——推箱子游戏(1)推箱子的游戏想必很多朋友都有玩过,简单地说就是,在一个m*n的范围内有k个箱子和k个目的地,你只能使用推的方法来移动箱子,不能拖,也不能推动两个或以上的箱子,活动范围通常比较狭窄,还有一些不可移动的障碍物,所以有一定难度和可玩性。以下是一个中等难度...

2006-05-29 23:26:00 6682 1

原创 用STL实现DFS/BFS算法——检查重复状态

用STL实现DFS/BFS算法——检查重复状态前几天,有网友留言说我使用“先深”、“先宽”的说法是狗屁二流子词汇,正确的说法应该是“深度优先”,“广度优先”。态度和用词虽然有点让人不好接受,但提的意见终归是有点道理的。请实话,我已经不记得最早是从哪里学来的“先深”、“先宽”,但可以肯定一点,本人是...

2006-05-15 15:58:00 3336 2

原创 用STL实现先深搜索及先宽搜索——N皇后问题例子

用STL实现先深搜索及先宽搜索——N皇后问题例子前两天在sharpdew的BLOG (http://blog.csdn.net/sharpdew) 上看到关于N皇后问题的文章,sharpdew的算法很漂亮,效率很高。我只是想从测试的角度出发试一下我的DFS/BFS算法,所以试着写了一下。不过我可以...

2006-05-06 23:30:00 2763 1

原创 用STL实现先深搜索及先宽搜索——数独(sudoku)例子(2)

用STL实现先深搜索及先宽搜索——数独(sudoku)例子(2)前面我们用一个游戏——数独sudoku,实作出了一个简单(但效率较差)的解法,验证了我们的DFS和BFS算法。为简单起见,我们采用了最简单的解法而暂不考虑效率。这里,我们尝试改进一下数独问题解法的效率,并将新的解法与原来的解法进行一个...

2006-05-04 22:02:00 2509 0

原创 用STL实现先深搜索及先宽搜索——数独(sudoku)例子(1)

用STL实现先深搜索及先宽搜索——数独(sudoku)例子(1)前面我们用STL容器实现了简单的DFS和BFS算法,为了检查它们的有效性,我们选择一个游戏——数独sudoku,先来实作出一个简单(但效率较差)的解法,测试了一下这两个DFS和BFS算法。考虑到可能有些朋友还不太了解这个数独sudok...

2006-05-04 21:16:00 6285 7

原创 用STL实现先深搜索及先宽搜索算法

用STL实现先深搜索及先宽搜索 先深搜索和先宽搜索算法是对问题状态空间树(state space tree)进行搜索的两种方法。问题状态空间树是指用树的结构来表示所有的问题状态,树中的每一个结点确定了所求解问题的一个问题状态(problem state);树中有些结点代表的是答案状态(answer...

2006-05-01 23:34:00 3187 1

原创 一个LINUX分区同时支持双启动和VMWARE虚拟机

一个LINUX分区同时支持双启动和VMWARE虚拟机 本人的硬盘中原本安装了Windows Xp和LINUX双启动,划分了两个硬盘分区给LINUX,一个用于root,一个用于swap。这样,在机器启动时,可以选择进入Windows或是LINUX。后来,我又在Windows系统中安装了VMware虚...

2006-04-22 11:35:00 3745 3

翻译 委托构造函数 delegating constructor

委托构造函数delegating constructorHerb Sutter & Francis Glassborow1        问题的背景1.1      简介C++没有提供让一个构造函数去委托另一个构造函数执行构造操作的机制。这意味着不能(或不提倡)使用缺省参数,类的维护者不得...

2006-03-22 16:04:00 3303 0

翻译 Beyond the C++ Standard Library: An Introduction to Boost -- Library 12.2 Usage

用法当你面对需要用多段代码来处理一个事件的情况时,典型的解决方案有:用函数指针进行回调,或者直接对产生事件的子系统与处理事件的子系统之间的依赖性进行编码。这种设计常常会导致循环的依赖性。通过使用 Boost.Signals, 你将获得灵活性和解耦。要开始使用这个库,首先要包含头文件 "b...

2006-03-11 22:41:00 1815 3

翻译 Beyond the C++ Standard Library: An Introduction to Boost -- Library 12.1 Signals

Library 12. Signals Signals 库如何改进你的程序? Signals 如何适用于标准库? Signals 用法 Signals 总结 尾注 Signals 库如何改进你的程序? 函数和函数对象的灵活多点回调 ...

2006-03-07 00:03:00 1297 0

翻译 Beyond the C++ Standard Library: An Introduction to Boost -- Library 11.2 Usage

用法要开始使用 Boost.Function, 就要包含头文件 "boost/function.hpp", 或者某个带数字的版本,从 "boost/function/function0.hpp" 到 "boost/function/function...

2006-03-06 16:13:00 1797 1

翻译 Beyond the C++ Standard Library: An Introduction to Boost -- Library 11.1 Function

Library 11. Function Function 库如何改进你的程序? Function 如何适用于标准库? Function 用法 Function 总结   Function 库如何改进你的程序? ...

2006-03-04 18:34:00 2371 0

翻译 Beyond the C++ Standard Library: An Introduction to Boost -- Library 10.2 Usage(下)

Lambda 表达式中的控制结构我们已经看到强大的 lambda 表达式可以很容易地创建,但是许多编程上的问题需要我们可以表示条件,在C++中我们使用 if-then-else, for, while, 等等。在 Boost.Lambda 中有所有的C++控制结构的 lambda 版本。要使用选择...

2006-02-28 11:12:00 1678 0

翻译 Beyond the C++ Standard Library: An Introduction to Boost -- Library 10.2 Usage(上)

用法与其它许多 Boost 库一样,这个库完全定义在头文件中,这意味着你不必构建任何东西就可以开始使用。但是,知道一点关于 lambda 表达式的东西肯定是有帮助的。接下来的章节会带你浏览一下这个库,还包括如何在 lambda 表达式中进行异常处理!这个库非常广泛,前面还有很多强大的东西。一个 l...

2006-02-23 14:42:00 1606 0

翻译 Beyond the C++ Standard Library: An Introduction to Boost -- Library 10.1 Lambda

Library 10. Lambda Lambda 库如何改进你的程序? Lambda 如何适用于标准库? Lambda 用法 Lambda 总结 Lambda 库如何改进你的程序? 对函数和函数对象进行适配,使之可用于标准库算法 ...

2006-02-10 16:56:00 1932 1

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