摘要: 今天上博客园看了看,发现创建这个博客已经有3年4个月。 起初创建博客是因为要学习,把自己学到的东西记录在博客上。然而学习之后发现根本是两回事,一个是因为要发表博客要登陆,虽然是几步的事情,但对于我这种懒得出仙的屌丝来说,只是记录在word上。另一个是看的是纸质书,虽然没有在纸质书上画(希望物品能整洁 阅读全文
posted @ 2016-05-11 12:45 阿津 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 从头到尾彻底理解KMP作者:July时间:最初写于2011年12月,2014年7月21日晚10点 全部删除重写成此文,随后的半个多月不断反复改进。1. 引言 本KMP原文最初写于2年多前的2011年12月,因当时初次接触KMP,思路混乱导致写也写得非常混乱,如此,留言也是“骂声”一片。所以一直想找... 阅读全文
posted @ 2014-11-10 15:11 阿津 阅读(2051) 评论(1) 推荐(0) 编辑
摘要: vector 类定义了好几种构造函数(2.3.3 节),用来定义和初始化 vector 对象。表 3.4 列出了这些构造函数。 vector<T> v1;vector保存类型为T对象。默认构造函数v1为空。vector<T> v2(v1);v2 是 v1 的一个副本。vector<T> v3(n, i);v3 包含 n 个值为 i 的元素。vector<T> v4(n);v4 含有值初始化的元素的 n 个副本。vector 标准库提供了许多类似于 string 对象的操作,表 3.5 列出了几种最重要的 vector 操作。 v.empty()如 阅读全文
posted @ 2013-04-22 14:38 阿津 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 刘未鹏(pongba) /文waterwalk /译首先非常感谢waterwalk的辛勤翻译:-) waterwalk把翻译回贴在原文的下面了,为了方便阅读我提取出来编辑以后重发一个帖子。这篇文章原本是想对最近C/C++争论系统的整理一下一些思考的,但由于一开始的时候用英文写了两段,后来就干脆都用英文了,造成很多人阅读的麻烦,在此抱歉。不过好在waterwalk翻译了整篇文章,于是单独贴在这里:-)另,原文在这里。问题为什么用C++呢? 在你皱着眉头离开之前,试着回答这个简单的问题。效率,是么?人人都知道这个。但情况是,当一个人开始讨论编程语言或与其相关的话题时,他必须要非常明确而有针对性。为 阅读全文
posted @ 2013-03-15 10:52 阿津 阅读(264) 评论(0) 推荐(0) 编辑
摘要: A:如何在头文件中定义string类型?B:string是标准库std里的一种数据类型,所以必须先用using namespace再定义string数据类型 例如: 1 //string.h 2 3 std::string a("Hello world!"); 4 std::cout << a << endl; 5 6 //或者 7 8 using namespace std; 9 string a("Hello world!");10 cout << a << endl;----------------- 阅读全文
posted @ 2013-02-07 22:59 阿津 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 从Rob Pike 的 Google+上的一个推看到了一篇叫《Understanding Object Oriented Programming》的文章,我先把这篇文章简述一下,然后再说说老牌黑客Rob Pike的评论。先看这篇教程是怎么来讲述OOP的。它先给了下面这个问题,这个问题需要输出一段关于操作系统的文字:假设Unix很不错,Windows很差。这个把下面这段代码描述成是Hacker Solution。(这帮人觉得下面这叫黑客?我估计这帮人真是没看过C语言的代码)12345678910111213141516171819public class PrintOS { public sta 阅读全文
posted @ 2013-01-30 10:41 阿津 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 在程序运行过程中,报错这个东西是在异常出现后用于防止继续程序的动作。这些异常,包括用户的,逻辑的,系统的都可以使用一个函数来识别。如果识别的程序不能够处理异常,那么就会抛出一个异常。而能够处理该异常函数就会接收并进行处理。在C++中,当一个异常被抛出,它就必须被处理,否则会导致一些程序的报错或终止。如果用户异常处理不存在,编译器就会提供一个默认机制来终止程序异常处理比常规的程序流程控制(如循环语句或 if 语句)更占用资源。常规情况下最好不要使用异常机制,将它留在真正“不寻常”的情形下使用吧。当不能在局部范围内处理时,异常非常有用的。您可以直接将流程控制转移到可以处理错误的地方,以此取代在程序 阅读全文
posted @ 2013-01-15 00:55 阿津 阅读(432) 评论(0) 推荐(0) 编辑
摘要: 1.5. 类的简介解决书店问题之前,还需要弄明白如何编写数据结构来表示交易数据。C++ 中我们通过定义类来定义自己的数据结构。类机制是 C++ 中最重要的特征之一。事实上,C++ 设计的主要焦点就是使所定义的类类型的行为可以像内置类型一样自然。我们前面已看到的像 istream 和 ostream 这样的库类型,都是定义为类的,也就是说,它们严格说来不是语言的一部分。完全理解类机制需要掌握很多内容。所幸我们可以使用他人写的类而无需掌握如何定义自己的类。在这一节,我们将描述一个用于解决书店问题的简单类。当我们学习了更多关于类型、表达式、语句和函数的知识(所有这些在类定义中都将用到)后,将会在后面 阅读全文
posted @ 2013-01-13 17:24 阿津 阅读(502) 评论(0) 推荐(0) 编辑
摘要: -----------------------------------7.2.2--------------------------------------------------------考虑下面不适宜复制实参的例子,该函数希望交换两个实参的值:// incorrect version of swap: The arguments are not changed! void swap(int v1, int v2) { int tmp = v2; v2 = v1; // assigns new value to local copy of the argument v1 = tmp; } 阅读全文
posted @ 2013-01-07 15:11 阿津 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 英文原文:10 steps to becoming a better programmer 这篇文章要介绍的,是我作为专业程序员这些年来学到的能真正提高我的代码质量和整体工作效率的 10 件事情。 1. 永远不要复制代码 不惜任何代价避免重复的代码。如果一个常用的代码片段出现在了程序中的几个不同地方,重构它,把它放到一个自己的函数里。重复的代码会导致你的同事在读你的代码时产生困惑。而重复的代码如果在一个地方修改,在另外一个地方忘记修改,就会产生到处是 bug,它还会使你的代码体积变得臃肿。现代的编程语言提供了很好的方法来解决这些问题,例如,下面这个问题在以前很难解决,而如今使用 lamb... 阅读全文
posted @ 2013-01-07 14:31 阿津 阅读(179) 评论(0) 推荐(0) 编辑