![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 67
千里修行
这个作者很懒,什么都没留下…
展开
-
windows 线程一般用法
目录一. 线程说明1. 概念 2. 线程与进程 3. 执行二. windows下的各种线程 1. win32线程 (1) CreateThread (2) _beginthreadex (3) 如何选择使用哪个线程函数 2. mfc线程 (1) 工作线程:AfxBegin...原创 2021-07-27 01:44:26 · 1481 阅读 · 0 评论 -
常见设计模式
一. 用于创建对象的设计模式1. 工厂模式 (1) 说明:需要生产大量对象,且对象具有多态特性。 (2) 类图结构 (3) 工厂模式分为"简单工厂"和"抽象工厂",这里说一下抽象工厂,eg, 要生产不同品牌的电池,简单工厂就能解决,如果还要生产不同品牌的主板呢?那么就需要再增加一个工厂类来生产,抽象工厂类就是这么来的。 (4) 实际工程中,工...原创 2021-07-19 23:29:17 · 489 阅读 · 0 评论 -
qt5.7 + vs2013配置
1. qt下载qt官方地址:https://www.qt.io/zh-cn/download 有收费也有开源,根据需求选择 如果线上安装速度慢或一直网络错误的可以下载完整包:https://download.qt.io/new_archive/qt/ 我们要集成到VS,所以选择:qt-opensource-windows-x86-msvc2013_64-5.7.0.exe2. vs插件下载下载地址:https://marketplace.visualstudio.com/searc...原创 2021-07-10 19:42:05 · 572 阅读 · 0 评论 -
单例模式对于析构的调用
SingleTest.h#ifndef _SINGLETEST_H__#define _SINGLETEST_H__class CSingleTest{public: static CSingleTest* GetInstance();public: int GetType();private: CSingleTest(); ~CSingleTest(); CSing...原创 2018-06-13 21:49:47 · 745 阅读 · 0 评论 -
观察者模式的通用性调用
1.通用框架接口#ifndef _OBSERVERIMP_H__#define _OBSERVERIMP_H__#include "stdafx.h"#include <map>#include <vector>template <typename ReturnT, typename ParamT>class ReceiverImplBase;template <typename ReturnT, typename ParamT>c原创 2021-02-25 02:31:48 · 310 阅读 · 0 评论 -
std::chrono获取UTC
1.durationduration:自定义时间间隔单位 std::chrono::hours hs(2);//2小时 std::chrono::minutes mns(4);//4分钟 std::chrono::seconds ss(1);//1秒钟 std::chrono::milliseconds mls(5);//5毫秒 std::chrono::microseconds mcs(7);//7微秒 std::chrono::nanoseconds nns(8);//8纳秒du原创 2020-11-30 22:14:02 · 1910 阅读 · 0 评论 -
STL比较常见的算法
头文件:#include <algorithm> sort:数列排序=============is_sorted:是否按规则排序 std::vector<int> vecArray = { 4, 1, 6, 9, 3, 1, 4 }; std::sort(vecArray.begin(), vecArray.end());//1, 1, 3, 4, 4, 6, 9 默认升序 std::sort(vecArray.begin(), vecArray.end(), [](int原创 2020-11-25 17:28:22 · 227 阅读 · 1 评论 -
async替代线程函数
async原型:template<class Fn, class... Args>future<typename result_of<Fn(Args...)>::type> async(launch policy, Fn&& fn, Args&&...args);线程创建策略:std::launch::async 实时创建线程====================std::launch::deferred 延迟创建线程,直到..原创 2020-11-25 01:47:55 · 170 阅读 · 0 评论 -
可变模板参数
基本语法: template <typename... T>void f(T... args); 参数个数: template<typename... T> void PrmCount(T... Prm) { printf("prm count:%d \n", sizeof...(Prm)); } 参数包的展开:递归方式和逗号表达式 (1)递归方式:参数包展开的函数和一个递归终止函数,两个条件必须满足 template<ty...原创 2020-11-24 13:51:40 · 177 阅读 · 0 评论 -
move和forward完美转发
产生条件:一个右值引用参数作为函数的形参,在函数内部再转发该参数的时候它已经变成一个左值------>std::move和std::forward应运而生; move vs forward:move----->无条件转换为右值;forward----->保持原参数属性,即完美转发; 举例说明:#ifndef _TRANS_H__#define _TRANS_H__#include "stdafx.h"class CTrans{public: template<原创 2020-11-16 16:41:04 · 558 阅读 · 0 评论 -
元组:tuple
元组tuple:make_pair的泛化,固定大小不同类型值集合的容器,基本功能跟结构体相似;但又不仅仅限于此,配合模板编程可以生成强大的组件; 赋值: //方式1 std::tuple<int, int, std::string> tuData1(1, 2, "35");//直接赋值 //方式2 std::tuple<int, int, std::string> tuData2; tuData2 = std::make_tuple(1, 2, "abc");取值:原创 2020-11-16 02:48:00 · 95 阅读 · 0 评论 -
初始化列表:initializer_list
变长容器STL的初始化:本质是依赖initializer_list的模板类来实现。 std::vector<int> vecArray = {2, 3, 4, 5, 6}; std::map<std::string, int> mapArray = { {"张三", 4}, {"李四", 6}, {"孙六", 7} };成员:size(), begin(), end(); 构造或成员函数初始化入参#include "stdafx.h"#include <ini原创 2020-11-13 16:37:48 · 233 阅读 · 0 评论 -
别名using和typedef
定义一个map:一个key需要映射两个value---------typedeftypedef std::map<std::string, int> mapList;typedef std::map<std::string, std::string> mapList1;使用模板类:-------------typedeftemplate<typename T>struct ST_MAP{ typedef std::map<std::string,原创 2020-11-10 02:47:55 · 92 阅读 · 0 评论 -
自动类型推导(auto,decltype)
auto:在编译时期确定待定义的变量类型;decltype:在编译时期推导一个表达式(不一定要定义)的类型(在满足auto功能的基础上) 应用场景:多用在泛型编程应用中(stl,模板等) typeDerivate.hpp#ifndef _TYPEDERIVATE_H__#define _TYPEDERIVATE_H__#include "stdafx.h"#include <vector>class CTypeDerivate{public: void Func()原创 2020-11-10 02:04:28 · 293 阅读 · 0 评论 -
C++11 lambda表达式
1.作用:可以方便的定义和创建匿名函数,以更直接的方式去写程序,具有更好的可读性和可维护性。2.语法形式:[ capture ] ( params ) -> ret { body }3.变量捕获:[] 不截取任何变量[&} 截取外部作用域中所有变量,并作为引用在函数体中使用[=] 截取外部作用域中所有变量,并拷贝一份在函数体中使用[=, &foo] 截取外...原创 2020-01-08 06:12:21 · 241 阅读 · 0 评论 -
C++11:function和bind
1.std::function 作为函数,函数对象,函数指针和成员函数的包装器 #include <functional>普通函数void Test(){ printf("Test Call\n");}... ...std::function<void()> pfnTest = Test;pfnTest();成员函数:需要...原创 2020-01-08 05:09:10 · 327 阅读 · 0 评论 -
智能指针
C++11引用了智能指针来解决内存泄漏的问题,特别在大型项目中new和delete频繁使用后,导致后期维护成本的持续走高。智能指针可以很好解决这一问题,但智能指针的使用也存在一些陷阱,只有熟练使用之后才能让它成为利器。为了更好地反应问题现象,先封装一个检测内存泄漏的API来进行测试,下面就shared_ptr,unique_ptr,weak_ptr进行说明。内存检测api#ifndef _...原创 2019-12-26 19:58:44 · 548 阅读 · 0 评论 -
新增关键字default, delete, final, override
详细说明:https://www.ibm.com/developerworks/cn/aix/library/1212_lufang_c11new/index.html原创 2019-12-24 12:40:51 · 148 阅读 · 0 评论 -
模板类的使用
1.目的:使用模板的目的就是能够让程序员编写与类型无关的代码。 注:模板的声明或定义只能在全局,命名空间或类范围内进行。2.通式:class 或 typename类:template<class形参名,class形参名,…>class类名{ ... }; 函数:template<class形参名,class形参名,......>返回...原创 2019-12-18 20:22:45 · 1611 阅读 · 0 评论 -
C++ 内存泄漏的处理
关于C++ 的内存泄漏问题一直是项目后期调试时的拦路虎,特别是项目的深度扩展和迭代,造成大量的内存问题。1.使用vld可以比较精准地定位到内存泄漏的程序申请点,方便快速处理问题; 缺点是当项目的new或mallolc调度深度太大时,直接无法检测到内存泄漏,小项目可以,大项目不推荐用 关于VLD的安装和使用请参考:https://blog.csdn.net/hust_bochu_xuch...原创 2019-11-24 00:16:03 · 549 阅读 · 0 评论 -
字符间的相互转换
1. CString 与 char *的转换/*-=======================CString==>char *==========================*/ USES_CONVERSION; CString strData = _T("abcdedfg"); char *pcData = T2A(strData.GetBuffer(0)); //安全转...原创 2019-10-22 16:14:19 · 120 阅读 · 0 评论 -
解决 error C1083: 无法打开预编译头文件xxx.pch: No such file or directory
问题产生:通常情况下不会出现这种错误,我出现这样的错误提示是因为,我要发布的是一个静态库,于是把要发布的头文件放到了include目录下,把其他文件(包括stdAfx.h及stdAfx.cpp)放到了src目录下,于是编译时提示:错误 1 error C1083: 无法打开预编译头文件:“Debug\PlotData.pch”: No such file or directory e:\mcp p...转载 2018-06-15 19:44:19 · 16600 阅读 · 3 评论 -
vs2013中能编译通过,但是会有红色波浪线错误
方法可以参考:https://blog.csdn.net/it_job/article/details/78737317原创 2018-05-20 12:24:08 · 2200 阅读 · 0 评论 -
VS 如何使用外部程序调试dll程序
假设:需要调试的程序ProDll,外部调用Dll的程序Proc,现在内部调试dll的设置如下:在"项目"----“属性”----“调试”----“命令”中输入 Proc.exe的输出路径:原创 2017-10-11 23:10:43 · 5337 阅读 · 0 评论 -
链接器工具错误 LNK2026 XXX模块对于 SAFESEH 映像是不安全的"
解决方法:1.打开该项目的“属性页”对话框。2.单击“链接器”文件夹。3.单击“命令行”属性页。4.将 /SAFESEH:NO 键入“附加选项”框中,然后点击应用。转自:http://www.cnblogs.com/hanxi/archive/2012/06/10/2544230.html转载 2017-10-06 16:04:36 · 645 阅读 · 0 评论