STL中并行算法 2021-04-05 C++ C++17标准的一个重大突破是让标准库中的部分算法支持了并行计算,这对于无处不在的多线程环境来说无疑是一个非常不错的消息。具体支持并行计算的算法可以参考提案文档p0024r2。 接下来将会选取两个典型算法函数对STL的并行算法进行介绍: #include <vector&g...
C++在线工具 2021-03-20 C++ 这篇博客打算介绍4个C++在线工具,当手头没有设备或者没有开发环境的时候可以用它们做一些研究性质的工作。 https://wandbox.org/ 该网站可以在线编辑以及编译C++源代码并且运行编译后的程序。在C++类别它支持GCC和CLANG,另外除了C++,C、C#、Jav...
解决vs2019编译qt5.15.2的错误 2021-02-03 C++ 记录一下编译qt-everywhere-src-5.15.2中qtwebengine遇到的问题。 第一、在windows上用vs2019编译qtwebengine的时候需要patch其中的3个文件,否则会报错。错误看起来好像是: ninja: build stopped: sub...
使用std::any代替std::shared_ptr<void>和void * 2021-01-03 C++ 大家在编写程序的时候应该遇到过这样一个场景,该场景需要传递某种数据,但是数据类型和数据大小并不确定,这种时候我们常用void *类型的变量来保存对象指针。例如: struct SomeData { // ... void* user_da...
使用std::sample获取随机样本 2020-12-26 C++ C++17标准库提供了一个std::sample函数模板用于获取随机样本,该样本是输入全体样本的一个子集。具体例子如下: #include <iostream> #include <vector> #include <iterator> #in...
实现一个类似std::bind的功能 2020-11-18 C++ 前两天有朋友问我std::bind是如何实现的,对照STL讲述原理后朋友表示还是很难理解,这可以理解,因为STL涉及到的东西太多,很难清晰的将核心部分显式出来。为了解释清楚这个问题,我自己实现了一个bind功能。当然了,比std::bind要简单非常非常多,缺少很多有用的特性,但...
使用std::span代替数组指针传参 2020-10-02 C++ 我们知道std::string_view可以创建std::string的一个视图,视图本身并不拥有实例,它只是保持视图映射的状态。在不修改实例的情况下,使用std::string_view会让字符串处理的性能大幅提升。实际上,对于那些连续的序列对象我们都可以创建这样一份视图,对于...
使用std::string_view提升字符串处理性能 2020-09-25 C++ C++标准库提供了一个非常优秀的字符串处理类std::string,我们可以通过该类完成各种字符串操作。但是std::string有一个缺点,它的很多操作都是针对字符串实体,存在不必要的内存拷贝的代码,导致字符串的处理性能不尽如人意。针对这种情况C++17标准引入了std::st...
std::enable_shared_from_this原理浅析 2020-08-05 C++ 在解释std::enable_shared_from_this之前,先看一个std::shared_ptr典型用法: #include <memory> int main() { std::shared_ptr<int> pt1...
使用fmtlib格式化字符串 2020-07-07 C++ 在C++中格式化字符串的方法一直是一个备受争议的话题,无论是printf系列函数还是Stream IO都有各自的优缺点。本篇文章直接略过这两种方法,将目光放到fmtlib这个第三方库中,虽然是第三方库,但是C++20标准会引入该库的一部分特性。 fmtlib格式化字符串的语法和p...