c++
文章平均质量分 76
只要你在
这个作者很懒,什么都没留下…
展开
-
c++11 之 async
promise和promise基本原理:线程1初始化一个promise对象和一个future对象然后把promise传递给线程2线程2于是对线程1有了一个promisefuture相当于一个接受一个promise,用来获取未来线程2传递的值线程2获取到promise后,需要对这个promise传递有关的数据,之后线程1的future就可以获取数据了。线程1阻塞等待线程2的数据到达使用方法:https://blog.csdn.net/hyl999/article/d..原创 2021-02-15 16:06:28 · 1121 阅读 · 0 评论 -
error LNK2019: unresolved external symbol __imp__inet_pton@12 referenced in function XXX
出现这个测错误得原因是忘了在link的input里面加入Ws2_32.lib原创 2020-10-24 14:22:14 · 582 阅读 · 0 评论 -
fatal error C1010: unexpected end of file while looking for precompiled head
在编译VS时候,出现fatal error C1010: unexpected end of file while looking for precompiled head。问题详细解释:致命错误C1010,在寻找预编译指示头文件时,文件未预期结束。就是没有找到预编译指示信息的问文件。顾名思义就是预编译因为缺少了预编译文件而失败。解决方法显然可以取消预编译,或者帮助编译器找到预编译文件。故解法:1.右键单击项目工程中的cpp文件,在菜单Project->Settings->.原创 2020-10-20 15:46:49 · 305 阅读 · 0 评论 -
linux下同步与互斥
锁主要有两个用途:1 解决互斥访问资源2 解决一个任务对另一个任务的依赖关于linux内核:linux内核只提供了轻量进程的支持,未实现线程模型。Linux是一种“多进程单线程”的操作系统。Linux本身只有进程的概念,而其所谓的“线程”本质上在内核里仍然是进程。1、互斥锁1.1 普通互斥锁这里普通互斥锁指的是非递归互斥锁。为了保护共享资源,使我们线程可以单独使用某个共享资源,使用之前先上锁,当其他进程要使用的时候,就需要等待到这个线程用完之后,再开锁...原创 2020-08-10 12:31:45 · 888 阅读 · 0 评论 -
STL中map用法详解
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识...转载 2020-04-13 17:44:16 · 362 阅读 · 0 评论 -
error LNK2005: 已经在*.obj中定义
为什么会出现这个错误??“error LNK2005: 已经在*.obj中定义” 编程中经常能遇到LNK2005错误——重复定义错误,其实LNK2005错误并不是一个很难解决的错误,弄清楚它形成的原因,就可以轻松解决它了。造成LNK2005错误主要有以下几种情况:1.重复定义全局变量。可能存在两种情况:A、对于一些初学编程的程序员,有时候会以为需要使用全局变量的地方就可...转载 2020-04-10 23:28:18 · 8494 阅读 · 1 评论 -
c++ 之 纯虚函数调用 pure virtual function call 错误
基类中定了纯虚拟函数,派生类中将其实现,但在某些情况下会出现 r6025 runtime error, pure virtual function call 这样的错误。在基类某个函数中调用该纯虚函数,本意是为了使用多态,1.在基类的构造函数中调用该函数,此时派生类派生类还未构造成功;2.或是在基类的析构函数中调用该函数,此时派生类以被销毁;以上两...转载 2020-04-06 17:45:06 · 2398 阅读 · 0 评论 -
c++ 之 在VS中添加lib的4种方法
1、lib的理解lib是一个二进制文件,与dll类似,供其他程序调用。lib与dll的区别是:dll是运行时需要的,lib是编译时需要的2、加载lib分两种方法,第一种适用于当前项目。第二种适用于所有项目,设置好后即使重建新项目也不需重新设置。(1)第一步:Project->Test Property Pages->C/C++->General->Add...转载 2020-03-28 10:11:39 · 6772 阅读 · 0 评论 -
一个有限状态机的C++实现
先放一个用C++11实现的FSM的代码: kuafu 咱们先来看一下什么是有限状态机(Finite-state machine, FSM), 先给一个 百度百科的解释 简单说就是作一件事可能会经过多个不同状态的转换, 转换依赖于在不同时间发生的不同事件来触发, 举个例子,比如 TCP的状态转换图, 在实现上就可以用FSM. tcp.jpeg 传统的实现方案if......转载 2020-03-24 21:23:21 · 1442 阅读 · 0 评论 -
C++预编译头
解释vs2017以前的 #include “stdafx.h”和新版本的vs2017的 #include "pch.h"下面以vs2017的 #include "pch.h"初步感觉这个文件没有用,但是去掉之后真是报错!预编译头:https://blog.csdn.net/u012135461/article/details/78430236也许请教了别的高手之后,他们...转载 2020-03-17 15:06:06 · 291 阅读 · 0 评论 -
SDL检查
SDL检查在用 Visual Studio 编译比较早的代码时,经常会遇到错误:错误 C4996 'wcscpy': This function or variable may be unsafe. Consider using wcscpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online...转载 2020-03-17 14:30:02 · 7156 阅读 · 1 评论 -
windows 封装 c++ 代码为dll
DLL是什么?ddl是windows OS下的动态链接库,大多由c/c++编写linux下就是so:.so(shared object)Linux中的.so文件 是动态链接的产物 ,也就对应着Windows下的dll。也大多是c/c++编写的.网上的例子:最近在进行OSG开发,想将里面模型导入部分重复使用的代码封装成DLL,这样后续不需要重复编写这部分...原创 2020-03-18 14:21:49 · 770 阅读 · 0 评论 -
c++ map被写坏
下面的程序class A{public:map<int, int> mi;}int main(){A p;char c[5] = {0};strcpy(c, "xxxxxxxxxx ... xxxxxxxxx");//一个足够越界那么长的字符串cout << a.mi[1] <<endl;//这是会发生崩...原创 2019-06-30 00:12:08 · 374 阅读 · 0 评论 -
error C2504: 'IReferenceClockTimerControl' : base class undefined
如果你的sdk安装有不同版本,譬如 Microsoft DrectX SDK(August 2007) 以及 Microsoft SDKS那么在你的VC directories中会出现两个或两个以上的 include directory如果 你需要编译的是最新的 Microsoft SDKS中的samples中的Filter1, 你需要在 VC directories中的inlude中...转载 2019-06-25 14:26:19 · 497 阅读 · 1 评论 -
全局变量 & 静态全局变量
全局变量作用范围:从全局变量定义的位置到本文件结束,如果想在别的文件中访问可以加上extend声明。静态全局变量作用范围:只在定义它的文件中可用,。静态全局变量就是用来解决重名问题的,使用静态全局变量就是告诉编译器这个变量只在当前文件使用,在别的文件中就不可以使用。...原创 2019-06-19 14:53:33 · 1458 阅读 · 1 评论 -
c++ cannot open include file 无法打开包括文件
绝大多数情况就是附加包含目录设置的不对把包含目录和代码中#include的路径拼起来是正确的,正常那就是正确的了C/C++->常规->附加包含目录...原创 2019-06-19 14:28:37 · 16740 阅读 · 0 评论 -
WINDOWS.H already included
以下转自CSDN论坛:http://topic.csdn.net/t/20020425/20/676815.htmlcompile error: c:\program files\microsoft visual studio\vc98\mfc\include\afxv_w32.h(14) : fatal error C1189: #error ...转载 2019-06-19 11:28:47 · 356 阅读 · 0 评论 -
std::move & std::forward & emplace_back() & push_back()
要实现转移语义,需要定义转移构造函数,还可以定义转移赋值操作符。MyString(“Hello”)是临时对象,也就是右值。虽然它们是临时的,但程序仍然调用了拷贝构造和拷贝赋值,造成了没有意义的资源申请和释放的操作。如果能够直接使用临时对象已经申请的资源,既能节省资源,有能节省资源申请和释放的时间。这正是定义转移语义的目的。 转移构造函数 MyString(MyString&am...原创 2018-06-06 23:00:52 · 645 阅读 · 0 评论 -
unique去重
主要思路为,先排序,再唯一,然后删除最后面的那段重复代码。举例:有这样一个vector int a[10] = {1,3,6,4,7,2,3,4,8,9}; // 1,2,3,3,4,4,6,7,8,9 vector<int> ivec(a, a+10);①首先将vector排序 sort( vecSrc.begin(), vecSrc.end() ); // 1,2,3,3,4,4...转载 2018-07-06 11:30:56 · 763 阅读 · 1 评论