文章分类 -  C++

摘要:Manacher’s Algorithm具体解释可以看http://leetcode.com/2011/11/longest-palindromic-substring-part-ii.html基本思路是,预处理原字符串,在字符之间插入特殊字符“#”, 这样计算出来的回文长度总是奇数,其半径正好等于原字符串的回文长度。记录以当前位置i为中心的回文半径长度dp[i],如果i在之前某个中心c的半径r之内,即c+r > i,则dp[i]的计算可以重用它的对称点mirror = c - (i-c)的结果。如果dp[mirror] > r-i,即str[i - (r-i) ... r]是以i 阅读全文
posted @ 2013-06-12 15:39 断桥残雪 阅读(228) 评论(0) 推荐(0)
摘要:友元友元是类或者函数,声明于类定义内部,且不受类访问控制影响。需先定义包含友元的类(定义此类的时候需要先声明授予友元权限的类)。在使用友元的类中,不必预先声明友元类或函数友元的声明使得其作用范围扩散的该类定义的外围作用域比如X类有个Y类的友元,则在X定义的外围作用域中的Z类也可以使用Y而不必声明:[代码]staticstatic函数无this形参,不属于某个对象,不能访问非static成员,不能是... 阅读全文
posted @ 2010-01-09 20:57 断桥残雪 阅读(152) 评论(0) 推荐(0)
摘要:构造函数初始化列表 使用初始化列表初始化成员变量,而不是显示赋值。原因是const型、引用和无默认构造函数的类类型等无法通过赋值初始化。初始化顺序和列表的顺序无关,而和成员的定义顺序有关。由此可以导出“不要用成员初始化另一个成员”。初始化式可以是任意表达式,也可是类的构造函数。默认构造函数 定义一个默认构造函数,或者提供有默认实参的构造函数。如果不允许隐式转换,对每个单形参... 阅读全文
posted @ 2010-01-09 20:12 断桥残雪 阅读(158) 评论(0) 推荐(0)