Python元编程 - 在Python中实现重载

避免重复的代码,避免复制粘贴一些逻辑的时候,我们使用了函数。那么避免复制粘贴定义一些类似的,或者较为相像的类的时候,我们就需要一个生成类的方法,在Python中,我们使用的方法就是元类(MetaClass)。

READ MORE +

C++ 中的类型推导

auto 的基本使用

auto 关键字被在变量声明或者作为函数返回值的占位符,在这两个位置的使用是可以通过单个等号右边,或者函数调用来确定 auto 具体应该成为什么类型的,比如像下面这样:

auto iter = map.begin();
template<typename T, typename U>
auto func(T a, U b) -> decltype(a + b);
READ MORE +
Post unittest cLion tips gtest

在 CLion 中配置 gtest

最近在学习 googletest 这个用于 C++ 的单元测试框架的时候,遇到了一个问题。就是希望可以在 CLion 中配置好一个制定项目的测试,然后由 CLion 运行并且给出一个结果。 结果当然是成功了的,这篇文章主要就记录一下整个配置的过程,配置过程整体很简单,主要就是写 CMakeLists.txt 的过程(因为 CLion 使用 CMakeLists 管理整个 C++ 的项目)。

项目目录结构

+ project_home
  + ext // external library
    + gtest // google test framework
	  - CMakeLists.txt
  + include // project headers
  + src // project source files
  + test // test files
  - CMakeLists.txt
READ MORE +
Post algorithm string

Two Ways Algorithm

Two Ways Algorithm 是一个用于字符串匹配的算法,算法类似 KMP 会返回所有 pattern 出现在 text 里的位置。但是和 KMP 不同的是 two ways algorithm 只使用常数大小的额外空间。

算法使用 \(O(m)\) 的时间预处理,并且可以在 \(O(n)\) 时间完成匹配,在最差的情况下会遍历 text 串两次。

READ MORE +

Rust Ownership System

Rust Ownership System

基于作用域和栈的内存管理是很符合直觉的,就像下面这样。

fn main() {
	let i = 5;
}
READ MORE +

Previous | 4 / 8 | Next