C++11 – 使用std::thread,std::shared_future,std::promise并行化/多线程化for循环,提升处理速度
1 应用场景 在实际的应用过程中,经常会遇到一个大数量的for循环耗时的问题,比如说出现了一个10000000次的for循环,每一次循环处理业务逻辑需要耗时1ms,如: for (int i = 0; i < 10000000; ++i) { dosomething() } 那么整个for循环…
- C++
- 2021-12-17
C++11 – 解析并获取可变参数模板中的所有参数
1 C++11解析并获取可变参数列表中的所有参数 C++11的新特性--可变参数模板(variadic templates)是C++11新增的最强大的特性之一,它对参数进行了高度泛化,它能表示0到任意个数、任意类型的参数。相比C++98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数…
- C++
- 2021-10-27
C++11 – 封装std::thread,增加子线程启动、暂停、唤起、停止功能
1 封装std::thread,增加子线程启动、暂停、唤起、停止功能 C++标准库的std::thread已经为C++增加了很好的跨平台多线程编程体验,程序员只需要使用标准库std::thread就可以写出很好的多线程并发程序。但是在std::thread中对线程的控制需要自主控制。 我们经常会在子…
- C++
- 2021-10-21
C++11 – 委托机制的实现TinyDelegate
1 使用C++11实现委托机制 1.1 TinyDelegate类 1.1.1 代码 TinyDelegate.hpp #ifndef TINY_DELEGATE_H #define TINY_DELEGATE_H #include <functional> #include <c…
- C++
- 2021-09-09
C++11 – std::chrono – 使用std::chrono::duration_cast进行时间转换,hours/minutes/seconds/milliseconds/microseconds相互转换,以及自定义duration进行转换
1 小时转换为分钟/秒/毫秒/微秒 #include <iostream> #include <string> #include <chrono> int main() { std::chrono::hours hour_time = std::chrono::h…
- C++
- 2021-02-05
C++11 – std::string – stod/stof/stoi/stol/stold/stoll/stoul/stoull,由std::string转换为int/long/float/double等其他类型
在C++11发布之前我们只能使用C语言的atoi等函数完成字符串到int/float/double等类型的转换,而在C++11中在std::string中自带了stoi/stod等工具函数进行转换! 1 std::stod 函数原型 double stod (const string& st…
- C++
- 2021-01-29
C++ 11 – final关键字简要介绍
如果在基类的虚函数声明中加上了final关键字,则表明后续的派生类不能重写该函数。 1 基类的虚函数上加上final关键字 表明基类后续的派生类不能重写该虚函数。 代码示例: #include <iostream> #include <memory> using namesp…
- C++
- 2020-10-12
C++11 – override关键字简要介绍
C++11 中的 override 关键字,可以显式的在派生类中声明,基类的哪些函数需要被重写,如果没被重写,则编译器会报错。防止出现在需要调用派生类某个成员函数的情况下错误的调用了基类的缺省函数实现。 1 派生类对基类中的函数继承 派生类对基类中的函数继承可以分为几种类型: 接口继承,通过在基类中…
- C++
- 2020-10-12
C++11 – 父类与子类相互包含的时候该如何正确的使用智能指针,防止循环引用
1 父类和子类相互包含的应用场景 在实际开发的过程中,经常会遇到这种类似的问题,一个父类通常维护着属于该父类的多个子类指针,而每一个子类中也存储着指向其父类的指针对象,方便进行节点递归或者其他操作。 比如说: 一个三维立方体,每一个三维立方体类都包含了所有属于该立方体的三角面类,而每一个三角面都存储…
- C++
- 2020-09-25
C++11 – std::bind简要介绍以及可绑定函数的几种形式总结
1 std::bind template <class Fn, class... Args> /* unspecified */ bind (Fn&& fn, Args&&... args); template <class Ret, class F…
- C++
- 2020-09-24
C++11 – std::function简要介绍以及可包装函数的几种形式总结
1 std::function 函数模板形式: template <class T>函数;//未定义 模板<class Ret,class ... Args> class function <Ret(Args ...)>; 1.1 函数模板说明 std::func…
- C++
- 2020-09-24
我的开源项目 – 支持C++11特性的定时器TinyTimer
1 基于C++11特性的微小定时器 - TinyTimer Github地址:https://github.com/HW140701/TinyTimer 只包含一个头文件的基于C++11特性的微小定时器实现类 -TinyTimer,支持 - 支持同步/异步执行定时器任务; - 支持中途中断定时器任务…
- 我的项目
- 2020-08-26