摘要:
前言 完成了前面三个模板元编程的排序以后,开始对Boost的MPL库感兴趣了,于是便使用MPL重新实现了一下那三个排序算法,选择排序、快速排序、堆排序。 时间上来说和之前差不多,堆排序花了我大部分的时间。最简单是应该就是选择排序了,只使用了一个类就实现了。 使用感悟 BoostMPL大大简化了元编程 阅读全文
摘要:
目录 目录 简介 最基本的锁 std::mutex 使用 方法和属性 递归锁 std::recursive_mutex 共享锁 std::shared_mutex (C++17) 带超时的锁 总结 简介 上一篇博文中,介绍了一下如何创建一个线程,分别是std::thread和std::jthread 阅读全文
摘要:
目录 目录 前言 实现的一些小细节 Debug 惰性求值 总结 Ref 前言 经过前两次经验的积累,终于来到了麻烦的堆排序。在一开始接触模板元编程的时候,我就期望有一天能够写出元编程堆排序的代码。原因是看了知乎大佬的一篇文章《在简历上写了“精通 C++”后……》。由于学识浅薄,感觉只能接触到模板元编 阅读全文
摘要:
目录 目录 简介 线程的使用 线程的创建 线程的方法和属性 std::jthread (C++20) stop_token (C++20) 总结 Ref 简介 本文主要介绍了标准库中的线程部分。线程是目前多核编程里面最重要的一部分。 与进程进程相比,其所需的资源更少,线程之间沟通的方法更多; 他们之 阅读全文
摘要:
目录 目录 简介 实现 数据结构定义 在数组前添加一个元素 判断 分堆 合并 快速排序的实现 总结 简介 上一篇使用C++模板模板实现了一个选择排序。这一次,更进一步的,实现了一个快速排序算法。关于快速排序的可以看这一篇文章快速排序 实现 和上一次一样,我把快速排序算法分为几个小的步骤,分别实现,然 阅读全文
摘要:
目录 目录 Boost的1.75版本新库 JSON库简介 JSON的简单使用 编码 最通用的方法 使用std::initializer_list json对象的输出 两种对比 解码 简单的解码 增加错误处理 非严格模式 流输入 进阶应用 对象序列化 反序列化 Boost.JSON的类型 array 阅读全文
摘要:
目录 目录 前言 代码详解 数据的结构 数据的操作 分割向量 合并向量 寻找最大值 排序 总结 前言 模板在C一直是比较神秘的存在。STL和Boost中都有大量运用模板,但是对于普通的程序员来说,模板仅限于使用。在一般的编程中,很少会有需要自己定义模板的情况。但是作为一个有理想的程序员,模板是一个绕 阅读全文
摘要:
目录 目录 介绍 使用 Boost和STL的区别 介绍 本来这一次是想简单介绍一下Boost里面的协程库的使用的,但是Boost.Coroutine已经被废弃了,而Boost.Coroutine2目前只有非对称的协程支持,个人感觉并不是特别具有使用的价值。而C++20中的协程,IDE对其的支持并不是 阅读全文
摘要:
文章目录 文章目录 文章内容介绍 Boost随机库的简单使用 生成一个随机的整数 生成一个区间的平均概率随机数 按概率生成一个区间的随机整数 一些经典的分布 与STL的对比 Ref 文章内容介绍 Boost.Random是Boost里面的一个随机库,它的第一正式版是在Boost 1.15中提供。它里 阅读全文
摘要:
在运行一些程序的时候,我们一般会把数据文件放在其他位置。而当在修改程序时,需要不断的修改代码,编译,执行。每次编译之后,都得将可执行文件复制到数据文件的目录。 这一问题有两种解决方法,一是直接在数据目录执行cmake,但是这导致一些cmake的缓存文件也会出现在数据目录;二是在CMakeLists. 阅读全文