CMake option参数的编译

CMake option参数的编译 执行命令时传入参数: cmake -DXXX .. # XXX是编译选项的名字 CMakefile.txt中写: option(XXX "dynamic lib" OFF) if(XXX) #add_definitions(-DXXX) .... else() .... endif() 源代码宏 xxx.c #include &qu

继续阅读 »

消除代码中很多if-else:策略类和工厂类

代码实现是java的伪代码,大致的意思是提供工厂注册接口,利用map或者其他的数据结构保存对象,然后根据策略条件取到相应的策略对象,进行操作! //接口 public interface UserPayService { /** * 计算应付价格 */ public BigDecimal quote(BigDecimal orderPrice); }

继续阅读 »

快速排序和堆排序

只是方便记忆查看 快排: #include <iostream> using namespace std; void sort(int *a, int left, int right) { if (left >= right)/*如果左边索引大于或者等于右边的索引就代表已经整理完成一个组了*/ { return; } int i = left; int j =

继续阅读 »

C++:auto和decltype返回类型后置

为什么要有后置类型? 是为了解决函数返回值类型依赖于参数而导致难以确定返回值类型的问题。 #include<iostream> using namespace std; template <typename T, typename U> auto add(T t,U u) -> decltype(t+u) { return t+u; } int main(

继续阅读 »

C++:switch/case字符串匹配

将字符串hash成数字,利用constexpr在编译器生成,如果hash冲突会在编译时报错! #include<iostream> typedef std::uint64_t hash_t; constexpr hash_t prime = 0x100000001B3ull; constexpr hash_t basis = 0xCBF29CE484222325ull; h

继续阅读 »

C/C++:哈夫曼树构建

参考地址:https://blog.csdn.net/yaoowei2012/article/details/18180769 #include <iostream> using namespace std; struct tree { int data; struct tree *left; struct tree *right; }; struct tree *cre

继续阅读 »

C++:岛屿个数问题

采用DFS方式,对二维数据进行遍历,遇到1则找到一个岛屿,然后把与之关联的位置全部置为2,那么对二维数组完成一次遍历,即可得出结果 /************************************************************************* > File Name: 11.cpp > Author: ryan_naiquan >

继续阅读 »

句子逆序

将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I” 所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符 #include <iostream> #include <cstring> #include <algorithm> using namespace std; void RevStr(c

继续阅读 »