02 2016 档案
摘要:RAII被认为是c++资源管理的最佳范式,但是c++98中用RAII必须为要管理的资源写一个类,这样一来RAII的使用就有些繁琐了。C++11有了lambda和function后,我们就可以编写泛化的RAII,实现ScopeGuard,优雅地解决这个问题。本文主要参考刘未鹏的博客。 主要代码如下 为
阅读全文
摘要:正则表达式基本每个程序员都会用到,实现正则表达式引擎却似乎是一个很难的任务。实际上,掌握《编译原理》前端的词法分析部分知识就能够实现一个简单的正则表达式引擎。这里推荐一下网易云课堂的课程。http://mooc.study.163.com/course/USTC-1000002001?tid=100
阅读全文
摘要:异常安全有两个目标: 不泄露任何资源。这个通过RAII可以做到。 不破坏数据结构。这是下文要讨论的事情 异常安全有三个级别: 基本安全:异常发生后对象和数据结构还有合法状态。实现简单,应该作为最低要求。 很安全:抛出异常后程序状态不变。即要有“原子性”,若成功则完全成功,失败则保持原状。本文的cop
阅读全文
摘要:最近在仿写stl,发现stl源码中将模板的声明与定义写在一起实在很不优雅。自己尝试用“传统”方法,及在.h文件里声明,在.cpp文件里定义,然后在main函数里包含.h头文件,这样会报链接错误。这是因为函数模板要被实例化后才能成为真正的函数,在使用函数模板的源文件中包含函数模板的头文件,如果该头文件
阅读全文
摘要:在仿写stl的过程中,被一处内存错误卡了很久。当内存池需要多次malloc时会出现堆损坏的错误,初步判断是数组越界,但总是检查不出来。一开始用Dr.Memory检查不出来,就试了一下devpartner。官网链接 http://www.borland.com/zh-CN/Products/Softw
阅读全文
摘要:n皇后问题是应用回溯法的经典问题。任一行、列、对角线不能有两皇后并存,因此在判断是否合法时,可以将某一行是否有皇后、某一列是否有皇后分别用数组存起来。注意到,对于往左下右上的对角线,每个点的行号(i)和列号(j)的和相等且与别的对角线不同,因此可用数组将此对角线是否有皇后,即i+j是否为1记录下来,
阅读全文
摘要:Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. For example, given n = 3, a solution set is: "
阅读全文
摘要:Given n non-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of largest rectangle in the hist
阅读全文
摘要:Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.) You have
阅读全文
摘要:本来以为没必要用栈,代码如下: class Solution { public: int longestValidParentheses(string s) { int stack = 0; int length=0,max=0; for(int i=0;i<s.length();i++) { if
阅读全文
摘要:这道题和之前的那道Regular Expression Matching有点相似,第一反应是跟之前一样,用递归来做 bool doMatch(char *s,char *p) { if (*p == '\0') return *s == '\0'; if(*p == '*') { while(*s!
阅读全文
摘要:看stl源码时,有一段代码感觉很奇怪 iterator begin() { return (link_type)((*node).next); } iterator和link_type是两种不同类型,怎么能这么返回呢?翻了一下以前的笔记,发现是由转换构造函数生成临时对象再return。 转换构造函数
阅读全文

浙公网安备 33010602011771号