随笔分类 -  C/C++

摘要:std::hash 由于C++11引入了哈希表数据结构std::unordered_map和std::unordered_set,所以对于基本类型也实现了标准的哈希函数std::hash,标准并没有规定具体的实现,只是提了几个要求: 不能拋出异常 对于相等的键必须产生相等的哈希值 对于不相等的键产生 阅读全文
posted @ 2020-09-29 23:15 HachikoT 阅读(2355) 评论(0) 推荐(3) 编辑
摘要:虚函数 C++用虚函数实现运行时多态,虚函数的实现是由两个部分组成的,虚函数指针与虚函数表。 虚函数指针(vptr)是指向虚函数表的指针,在一个被实例化的对象中,它总是被存放在该对象的地址首位。而虚函数表(vtbl)用于保存类包含的虚函数指针列表: class Base { public: virt 阅读全文
posted @ 2020-09-29 00:05 HachikoT 阅读(258) 评论(0) 推荐(0) 编辑
摘要:空类的大小 空类型不包含任何信息,按理来说它的sizeof应该是0;但C++中要求对于类的每个实例都必须有独一无二的地址,以便能区分出具体的实例,所以编译器往往会设置空类的大小为1字节: class Foo { }; int main() { std::cout << sizeof(Foo) << 阅读全文
posted @ 2020-09-27 23:01 HachikoT 阅读(271) 评论(0) 推荐(0) 编辑
摘要:multiprecision boost中提供的高精度库,支持高精度整型,浮点型等。并且提供统一的接口模板,只需要指定对应的后端类型即可实现对应类型的高精度计算: boost::multiprecision::number<XX_backend> cpp_int_backend 提供高精度整型后端类 阅读全文
posted @ 2020-09-25 09:47 HachikoT 阅读(2157) 评论(0) 推荐(0) 编辑
摘要:snappy snappy是由google开发的压缩/解压C++库,注重压缩速度,压缩后文件大小比其它算法大一些 snappy在64位x86并且是小端的cpu上性能最佳 在Intel(R) Core(TM)2 2.4GHz中测试数据: 压缩速率:~200-500MB/s 解压速率:~400-800M 阅读全文
posted @ 2020-08-26 19:01 HachikoT 阅读(2091) 评论(0) 推荐(0) 编辑
摘要:lexical_cast lexical_cast使用统一的接口实现字符串与目标类型之间的转换,需引入头文件#include <boost/lexical_cast.hpp>: template<typename Target, typename Source> Target lexical_cas 阅读全文
posted @ 2020-08-14 20:42 HachikoT 阅读(318) 评论(0) 推荐(0) 编辑
摘要:目录结构 . |-- cmake | |-- CompilerSettings.cmake | |-- Options.cmake | `-- ProjectJsonCpp.cmake |-- CMakeLists.txt |-- libdevcore | |-- CMakeLists.txt | 阅读全文
posted @ 2020-08-13 10:35 HachikoT 阅读(846) 评论(0) 推荐(0) 编辑
摘要:-pthread 在多数系统中,-pthread会被展开为“-D_REENTRANT -lpthread”。作为编译参数可以通知系统函数开启多线程安全特性,比如将errno定义线程局部变量,gcc手册里也指出应该在编译和链接时都增加-pthread选项。 阅读全文
posted @ 2020-08-09 23:08 HachikoT 阅读(193) 评论(0) 推荐(0) 编辑
摘要:Json Json是一种轻量级数据交换格式,可以表示数字,字符串,布尔值,null,数组,键值对: { "encoding" : "UTF-8", "plug-ins" : [ "python", "c++", "ruby" ], "indent" : { "length" : 3, "use_sp 阅读全文
posted @ 2020-08-06 12:50 HachikoT 阅读(272) 评论(0) 推荐(0) 编辑
摘要:R+字符串 prefix(optional) R"delimiter(raw_characters)delimiter" (6) (since C++11) C++11引入了原始字符串格式,用户避免在字符串中加入转义字符\,可以用于表示json字符串等场景 阅读全文
posted @ 2020-08-05 20:47 HachikoT 阅读(2874) 评论(0) 推荐(0) 编辑
摘要:警告选项 -Wall:开启大多数的警告信息 -Wextra:开启额外的警告信息,比如参数未使用警告(-Wunused-parameter) -Werror:将警告当作错误,中断编译 优化选项 -O,-O1:在不影响编译速度的前提下,尽量采用一些优化算法降低代码大小和可执行代码的运行速度 -O2:该优 阅读全文
posted @ 2020-08-04 23:06 HachikoT 阅读(212) 评论(0) 推荐(0) 编辑
摘要:C++引入leveldb 编译安装: git clone --recurse-submodules https://github.com/google/leveldb.git cd leveldb mkdir -p build && cd build cmake -DCMAKE_BUILD_TYPE 阅读全文
posted @ 2020-04-21 22:58 HachikoT 阅读(342) 评论(0) 推荐(1) 编辑
摘要:random随机数库 C++11引入了新的随机数生成机制,那就是 random_device`。对于写随机数相关的程序来说实在是太香了。 随机数生成引擎和随机数分布引擎 随机数生成引擎(Generator) :用于生成标准分布的随机数序列 随机数分布引擎(Distribution) :对随机数生成引 阅读全文
posted @ 2020-04-19 17:26 HachikoT 阅读(755) 评论(0) 推荐(0) 编辑
摘要:operator bool()是什么 在C++中, 语法用来将对象转换为指定的 类型,当这里 为`bool`时,就可以直接在条件判断式里面直接用该对象: 建议 个人还是觉得尽量不要用这种语法,还是像java那样写出特定名字的判断函数最好。C++也真是,搞这些复杂的语法太多了,反而影响语言使用者学习。 阅读全文
posted @ 2020-04-19 14:03 HachikoT 阅读(4493) 评论(2) 推荐(3) 编辑
摘要:多层级makefile 当项目变大之后,需要多层级的makefile来编译,每个makefile的具体功能实现参考单源文件目录makefile。然后再在顶层目录写一个总的makefile来实现编译逻辑就行。 这里假设存在main模块和libdevcore模块。 顶层makefile # 项目根目录 阅读全文
posted @ 2020-04-17 21:11 HachikoT 阅读(819) 评论(0) 推荐(0) 编辑
摘要:main函数签名 C++中允许两种格式,带参数的和不带参数的: 1. 2. 和C标准不同,C++中 函数必须写明返回类型为 ,不支持 默认返回 类型这一规定。 同时和C标准一样,若 函数中没有返回语句,那么最后默认添加上 语句 阅读全文
posted @ 2020-04-06 16:17 HachikoT 阅读(630) 评论(0) 推荐(0) 编辑
摘要:C++时间函数小结,更新中 阅读全文
posted @ 2020-04-01 11:15 HachikoT 阅读(278) 评论(0) 推荐(0) 编辑
摘要:C++中的lambda函数 lambda函数是函数式编程中的概念,由C++11引入,成为现代C++中重要的特性。 所谓lambda函数就是匿名函数,语法结构: capture list : 捕获列表 params : 参数列表 mutable : 是否能更改按值捕获的变量 noexcept : 是否 阅读全文
posted @ 2020-04-01 00:41 HachikoT 阅读(111) 评论(0) 推荐(0) 编辑
摘要:总结C++中字符串的操作,更新中 阅读全文
posted @ 2020-03-24 19:37 HachikoT 阅读(195) 评论(0) 推荐(0) 编辑
摘要:看了effective STL关于size和empty的小细节的笔记 阅读全文
posted @ 2020-01-08 21:36 HachikoT 阅读(1051) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示