![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++学习总结
文章平均质量分 67
一只懒虫
进击的学生
展开
-
自己写一个GetLastError()函数
文章目录1.简述2.设计3.程序4.程序不足之处1.简述windows编程中常见到GetLastError(),项目里也经常见到,所以自己动手写一个,以便用到项目里。windows下clion+gcc+cpp112.设计按需求看,GetLastError()函数是个全局函数,所以要使用单例模式设计类,以便全局使用。获取最后一个error,符合FIFO,所以采用stack数据结构。...原创 2019-07-02 10:31:49 · 523 阅读 · 1 评论 -
几个与窗口有关的实用win api
根据句柄判断是否是个窗口IsWindow(m_Hwnd);返回值是BOOL类型,参数HWND类型。是个窗口返回true,不是返回false根据句柄判断一个窗口是否可见IsWindowVisible(m_Hwnd);返回值是BOOL类型,参数HWND类型。可见返回true,隐藏返回false。获取当前活动窗口,最前窗口,由此可判断一个窗口是否最前HWND GetForegrou...原创 2019-03-27 11:15:43 · 920 阅读 · 0 评论 -
c++ 关键字operator
文章目录1. 操作符重载类型操作符重载全局操作符重载1. 操作符重载内置类型的一些操作符在内部都定义好了,可以直接用;自定义类型想使用一些操作符必须要重载。常见的操作符重载有>、<、=、==等具体可以参考哪些操作符可以重载的表。类型操作符重载我们有个Person类,定义如果2个对象的age相同,那么他们就相等。这就需要操作符重载,代码如下:#include &l...原创 2019-02-13 17:27:18 · 369 阅读 · 0 评论 -
c++关键字goto
文章目录goto基本功能跳转跳出本次循环,功能类似continuegotoc++最强大的关键字之一,它可以使程序跳转到指定位置继续运行。还记得上c++的课老师说不要随意使用goto,原则上尽量避免使用goto。理论上可以证明,用顺序,条件,循环可以解决所有问题,所以尽量不要用goto语句!大量使用goto使程序结构混乱,大型程序后期维护性较差。要是使用goto带来的好处远大于坏处,可...原创 2019-02-12 10:32:34 · 9462 阅读 · 1 评论 -
VS2008上安装64位编译器工具
文章目录原因准备过程原因既然是要安装,坑定是以前安装的时候没有安装64位程序的编译工具,我们现在要补救,而不是采用重装的方式准备win10vs2008的安装包iso压缩文件解压成文件夹我的这个文件名叫en_visual_studio_team_system_2008_team_suite_x86_x64wow_dvd_X14-26461.iso过程打开控制面板。按win键...原创 2019-02-22 10:26:18 · 1975 阅读 · 0 评论 -
c++内存管理
文章目录要说c++内存管理,必须先研究一下c++的内存是如何分配的跟内存有关问题野指针怎么杜绝野指针?常见的内存错误暂时就这么多,后面有空再写要说c++内存管理,必须先研究一下c++的内存是如何分配的栈: 程序种执行的函数内的局部变量都是在栈上面创建的,函数执行结束这些存储单元会被自动释放。栈的内存分配时内置于指令集之中的,效率极高,但是由于寄存器的容量限制,所以栈内分配的容量十分有限。堆...原创 2019-01-10 11:32:02 · 809 阅读 · 0 评论 -
使用vector遇到的坑,与c++版本有关
文章目录遇到的问题遇到的问题先上代码:void UserList::RemoveItem( unsigned int userid ){ std::vector<ZOOM_SDK_NAMESPACE::IUserInfo*>::iterator it; for (it = m_user_list.begin();it != m_user_list.end(); ++it)...原创 2019-01-18 15:23:29 · 2812 阅读 · 1 评论 -
c++ 隐式类型转换
文章目录谈谈c++隐式类型转换列举一些隐式类型转换的例子有时候隐式类型转换并不好explic关键词的用法总结谈谈c++隐式类型转换什么是c++隐式类型转换?这是指c++自动将一种类型转换成另一种类型,是编译器的一种自主行为。为什么c++需要隐式类型转换?c++多态的特性,就是通过父类的对象实现对子类的封装,以父类的类型返回之类对象。c++中使用父类的地方一定可以使用子类代替,这也得益...原创 2018-12-25 17:14:32 · 14267 阅读 · 4 评论 -
c++模板编程基础
文章目录谈c++模板编程模板函数模板类谈c++模板编程说模板编程,第一个想到的却是c++ STL的容器。STL的容器都是采用模板编程完成的,之所以称为容器,我想也是因为模板编程赋予了他多变的存储与处理对象的能力。就拿set来说吧set<int> int_set;//这样这个set就是int类型的容器了set<std::string> string_set;//...原创 2018-12-11 11:29:35 · 1424 阅读 · 0 评论 -
在Unicode和ASCII情况下使用c++操作剪贴板(附源码)
文章目录1.程序需求与环境2.技术分析3.源代码说明4.总结1.程序需求与环境需要在一个带界面的win32工程能使用剪切板,点击一个按钮,向剪贴板中copy内容,这样用户可以直接使用‘ctr + v’将内容复制出来。vs2008下使用c++Windows系统目标:写一个类封装clipboard操作。2.技术分析坑定是调用win api,但是剪切板设计到内存操作,操作是以byte...原创 2019-04-12 12:42:27 · 733 阅读 · 1 评论 -
Missing 'typename' prior to dependent type name 'list<int>::iterator'
sss原创 2019-04-18 15:17:37 · 4605 阅读 · 0 评论 -
windows socket函数介绍
文章目录1.说明2.socket函数介绍3.需要的头文件、lib、dll1.说明俗话说知己知彼百战不殆,要用socket,先了解它的api参数,比较我们不可能重新造个socket轮子。环境:windows必备条件:学过计算机网络,或者对tcp/ip有过了解2.socket函数介绍函数原型:SOCKET WSAAPI socket( __in int af,...原创 2019-06-25 10:44:51 · 868 阅读 · 0 评论 -
c++11 auto关键词和基于范围的for循环
文章目录1.说明2.例子1.说明为啥把他们放在一起呢?因为我认为他们都给编程人员提供了编码的便利,编码量减少。基于范围的for循环就是以前的for循环简化版auto是类型推导,让使用者获得动态语言的使用体验;但是有区别,那就是auto声明的变量类型,你可以不知道,但是编译器一定要知道,这样才不会报错。程序调试运行在clion2019.3版本,c++11环境下2.例子1.auto...原创 2019-06-14 11:14:06 · 1812 阅读 · 0 评论 -
using 继承构造函数+类型别名与别名模板声明
文章目录1.using的基本用法2.c++11新特性之继承构造函数3.c++11新特性之类型别名与别名模板声明1.using的基本用法命名空间声明,或将命名空间名字导入到当前命名空间或作用域。void fun(){ using std::string;//导入名字到函数作用域 string s("sss");}#include <iostream>us...原创 2019-06-06 10:47:49 · 904 阅读 · 0 评论 -
c++11内联命名空间的用处
文章目录1.命名空间介绍2.例子3.说说怎么功能函数版本迭代4.总结1.命名空间介绍命名空间是为了实际工程而生的东西,工程大了,项目之间的命名冲突会经常碰到,命名空间就是为了解决这一问题。内联命名空间将子命名空间的名字导入到父命名空间,这样就可以在其它子命名空间使用父命名空间直接调用。一方面是简化使用过程,另一方面可以实现功能函数版本迭代。内联命名空间使用inline关键词前缀。2....原创 2019-06-05 10:34:21 · 953 阅读 · 0 评论 -
Duilib控件继承关系图
1. 说明A指向B,A就继承于B。Window控件单独,其它控件都是继承于Control控件。纯自绘,如有错误,请指出,望包容。2. 控件继承图如下原创 2019-05-21 14:11:58 · 480 阅读 · 0 评论 -
c++ 定时器Timer在项目中的使用
文章目录1、情况说明2、空循环实现3、定时器实现1、情况说明由于最近要在项目里做弹出弹幕,要求是弹出1秒后消失,一开始我使用空循环进行计时,发现执行到这段代码CPU占用率上升十几个百分点,后来改成定时器实现,发现CPU表现正常。2、空循环实现ShowWindow(true);time_t start_time = GetTickCount();time_t now_time = s...原创 2019-04-29 09:50:20 · 8435 阅读 · 0 评论 -
c++ 多线程(2000个)端口扫描(附源码)
文章目录程序适应环境与基本介绍程序适应环境与基本介绍情况:开2000个线程,扫描主机上开启的端口,扫描时间40秒左右。瓶颈:不管开5000还是更多,都不能大幅加快扫描时间。瓶颈解决方法:可以使用最常被开放的1000个端口列表进行扫描,网上应该有,社会学+编程。注意:socket是宝贵的系统资源,不用要关闭;多线程中临界区资源要加锁。编程环境:vs2008(c98)代码如下:#i...原创 2019-04-19 15:02:12 · 3018 阅读 · 0 评论 -
C++获取windows中所有进程,使用pid杀死进程,并用map保存进程id与name以备后用
#include <iostream>#include <string>#include <map>#include <windows.h>#include <TlHelp32.h>bool TraverseProcesses(std::map<std::string,int> &_mapProcess)...原创 2019-04-18 16:27:58 · 3700 阅读 · 0 评论 -
c++ regex 正则表达式使用
文章目录概述正则表达式库例子概述正则表达式是在c++11之后才被支持,叫正则表达式库。使用的时候要包含<regex>头文件正则表达式库正则表达式有3个主要的算法regex_matchregex_searchregex_replace既然出现在c++11版本,那么迭代器这一重要的特性肯定也是要有的regex_iteratorregex_token_it...原创 2018-12-27 16:08:56 · 4530 阅读 · 0 评论 -
c++容器 array、vector使用以及注意事项
文章目录vector和array使用vector的一个例子vector和arrayarray是c++11之后新加的容器类型,他比vector更加轻便。array的数据存储在栈中,vector的数据存储在堆中。所以array容器处理数据的效率更快vector处理数据的量更大vector更强大,封装的函数更多;array更轻便,更适合一些操作简单,数据量比较少的情况。下面看一下他...原创 2018-12-20 14:06:38 · 3316 阅读 · 2 评论 -
c++模板学习
c++ 模板编程什么是c++模板编程?为什么需要它?模板编程中使用的关键字:typename、classtypename介绍class介绍总结什么是c++模板编程?为什么需要它?首先,模板编程虽然有缺点,但是它完全没达到最邪恶的黑魔法的程度。什么是模板编程?模板模板,字面意思就是搞出一个模板,以后可以复用。为啥要用它?这就要从它的优点说起:上面提到的复用,毕竟程序员经常写一些重复代码...原创 2018-11-28 15:52:47 · 358 阅读 · 0 评论 -
安全开发生命周期(SDL)禁止的函数调用(翻译)
文章目录原文名正文表1. 禁止的字符串复制函数和它的替代函数表2. 禁止的字符串连接函数和它的替代函数表3.禁止的sprintf函数和替代函数表4.禁止的“n”sprintf函数和替换表5.禁止变量参数sprintf函数和替换表6.禁止变量参数“n”sprintf函数和替换表7.禁止的“n”字符串复制功能和替换表8.禁止的“n”字符串连接函数和替换表9.禁止的字符串标记化功能和替换表10.禁止的M...翻译 2018-09-25 14:06:25 · 1058 阅读 · 0 评论 -
C++预处理总结、系统性学习心得
预处理不带参数的宏定义带参数的宏定#include语句的用法条件编译命令的使用 #pragma#line#undef#ifdef #ifndef#if不带参数的宏定义#define PI 3.14 # 表示这是一条预处理命令 PI 宏名,它是一个标识符 3.14 字符串,它是代替宏名的真实值* 在编译预处理时,...原创 2018-09-14 11:04:00 · 476 阅读 · 0 评论 -
C++字符串的类型转换(std::string, std::wstring, c-string)
本文列出string、wstring、char、wchar转换成int、double、float、long、int64、unsigned int64等类型的方法。函数:atoi、atof、atol、atoll、itoa、strtod、strtof、strtol、strtold、strtoll、strtoul、strtoull、_strtoi64、_wcstoi64、_strtoi64_l、 _wcstoi64_l、_strtoui64、_wcstoui64、_strtoui64_l、_wcstoui64_l原创 2018-09-19 13:53:37 · 4584 阅读 · 0 评论 -
c++前置声明用于解决:c++编译遇到问题error C2143: syntax error : missing ';' before '*'
这个错误还可能导致以下错误:error C4430: missing type specifier - int assumed. Note: C++ does not support default-intrror C2061查阅文档msdn发现: * 导致这种错误的可能有一下一些情况: * 在不该加分号的地方加分号 * 在该加分号的地方不加分号 * 头文件循环包含这...原创 2018-09-10 09:43:45 · 19630 阅读 · 3 评论 -
mfc对话框中(Button)控件的显示与隐藏
控件的基本认识控件分为静态控件和动态控件静态控件:一般我们从右边的工具栏上拖到对话框上的控件就是静态控件动态控件:一般我们创建控件类继承于mfc的类,比如CButton,那么new出来的对象,就是动态创建的控件控件的隐藏与显示静态控件的隐藏与显示与动态控件一样,所以我就以静态控件为例子控件ID与句柄一个项目中对于一个控件对象的唯一标识是控件ID,而一个对象...原创 2018-09-05 17:00:17 · 15481 阅读 · 0 评论 -
effective c++第三篇
资源管理资源概述c++中最常见的资源就是内存资源,管理不好内存资源容易造成内存泄漏。其它常见资源有:**文件描述器、互斥锁、图形界面中的字体和笔刷、数据库链接、网络socket等。条款13:用对象管理资源首先先理解几个常识: c++中普通的对象是存放在栈中的,当对象离开作用域,对象析构函数被调用 c++中new出来的对象是放在堆上的,如果不适用delete,它不会自...原创 2018-08-24 16:18:01 · 138 阅读 · 0 评论 -
effective c++第二篇
第二篇:构造、析构、赋值运算条款05:了解c++默默编写,并调用哪些函数编译器可以给类自动创造default构造、copy构造函数、析构、copy assignment操作符函数前提是你缺省了这些函数的声明和定义**在类内如果有引用类型(referrence)和const类型的成员变量的话,编译器不会提供默认的赋值操作符函数,需要自己写若不想使用编译器自动生成的函数,就...原创 2018-08-24 11:05:14 · 112 阅读 · 0 评论 -
effective c++笔记-第一篇
声明与定义声明:揭示函数/变量的签名,参数和返回类型 如:int fun(int)定义:实际是为各对象分配内存在构造函数前使用explicit关键字class B{ public: B(int x){}};有一个函数:void Fun(B obj); 调用 说明 有explicit 无explicit ...原创 2018-08-23 16:59:56 · 493 阅读 · 0 评论 -
c++基本数据类型的介绍、一些常用windows数据类型介绍及转换
文章目录1&amp;amp;gt; 怎么计算一个类型的范围?2&amp;amp;gt; 常见的c++数据类型的字节数3&amp;amp;gt; 一些常见windows数据类型引言windows编程常用的数据类型字符串转换成窗口句柄HWND1&amp;amp;gt; 怎么计算一个类型的范围?以前大学学的8086是16位的寄存器,现在32,64的都有了;那么现在看看数据类型单位是字节(8位)也是合理的,提高性能,便于字节对齐,提高内存访问效率原创 2018-09-21 11:30:20 · 899 阅读 · 0 评论 -
标准C++
目录标准c++1&amp;gt; 公用库2&amp;gt; 动态内存管理3&amp;gt; 数值限制4&amp;gt; 错误处理5&amp;gt; 字符处理库6&amp;gt; 容器库7&amp;gt; 算法库8&amp;gt; 迭代器库9&amp;gt; 数值相关库10&amp;gt; 输入输出库11&amp;gt; 本地化库12&原创 2018-09-21 15:16:44 · 482 阅读 · 0 评论 -
怎么理解c++中的回调函数?为啥需要回调?
回调小思谈回调回调的形象说明程序里怎么做?最后附上本人涂鸦作.谈回调调用一些sdk或别人写的代码库时,常会用到回调.但是它到底是干什么的?为啥需要他?这些问题以前都没有很深入的理解它,就知道就应该这样,必须这样做.回调的形象说明如果说回调,有下面这个形象的说明:A调用了B的某个函数,然后B去执行这个函数,这个执行是有时间的,如果时间太长那么这时候就需要回调了.因为A不可能一直等B...原创 2018-11-22 15:05:09 · 3499 阅读 · 6 评论 -
从c++父类与子类指针相互转换看c++强制类型转换
c++与c的类型转换c与c++类型转换的比较c++强制类型转换c与c++类型转换的比较c风格的类型转换一般是直接使用基本内置类型进行转换,c++中定义了4个关键字:static_cast、dynamic_cast、reinpreter_cast、const_cast,用于强制类型转换(cast).下面举个c style类型转换,c++的几个强制类型转换关键字后面分别介绍。int i =...原创 2018-11-22 10:02:51 · 16641 阅读 · 2 评论 -
c++ bool类型
文章目录bool类型bool类型变量默认初始化值bool类型bool类型是c++基本类型之一bool类型有2个值true or false,true默认值是1,false的默认值是0;所以,它们可以用于数值运算int x = 2*true +false+6;一个bool 类型的变量只能是true或false,也就是非0即true,0即false,所以给bool类型变量赋值会被自动...原创 2018-11-15 10:38:40 · 34963 阅读 · 2 评论 -
c++ lambda表达式常用的情形
lambda表达式介绍懒,摘自msdnCapture 子句(在 C++ 规范中也称为 lambda 引导。)参数列表(可选)。 (也称为 lambda 声明符)可变规范(可选)。异常规范(可选)。尾随返回类型(可选)。“lambda 体”lambda表达式又被称作lambda函数,匿名函数。当一个函数,你觉得不需要第二次用到它,你就可以把它写成lambda函数,因为你没...原创 2018-11-02 16:18:20 · 1716 阅读 · 0 评论 -
c++中memset给一个struct或class初始化,赋0
memset函数的用法将缓冲区设置为指定的字符。下面是网上常见的说法,也就是memset函数的用法函数功能是:将s所指向的某一块内存中的前n个字节的内容全部设置为ch指定的ASCII值, 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针,它是对较大的结构体或数组进行清零操作的一种最快方法。头文件是:<mem...原创 2018-10-24 10:01:24 · 7136 阅读 · 0 评论 -
理解c++多线程编程
多线程编程工欲善其事必先利其器CLion安装mingw并配置以支持c++11多线程编程本篇博文不是主要介绍互斥锁之类的,是理解线程的执行,以便以后有把握的写多线程程序。#include&amp;amp;lt;thread&amp;amp;gt;#include&amp;amp;lt;iostream&amp;amp;gt;#include &amp;amp;lt;mutex&amp;amp;gt;原创 2018-09-30 14:56:28 · 4733 阅读 · 8 评论 -
c++多线程编程:join()函数与detch()函数的区别。
join函数与detch在一个线程中,开了另一个线程去干另一件事,使用join函数后,原始线程会等待新线程执行结束之后,再去销毁线程对象。这样有什么好处?---->因为它要等到新线程执行完,再销毁,线程对象,这样如果新线程使用了共享变量,等到新线程执行完再销毁这个线程对象,不会产生异常。如果不使用join,使用detch,那么新线程就会与原线程分离,如果原线程先执行完毕,销毁线程对象及...原创 2018-10-15 11:00:15 · 16776 阅读 · 6 评论 -
自己动手用c++实现哈希表
哈希表查找效率约等于1实现思想介绍一般的hash思想未采用模板,简单的实现key是int,value是string把输入的key值经过hash函数计算,算出它要放入的桶的编号采用一个指针数组记录各个桶每个桶里都有50个key_value对象,这里未采用链表,只是用数组简单那模拟缺点batch类设计的有问题,没采用链表,不能动态增加insert方法,不能改变已有的ke...原创 2018-09-27 13:39:41 · 4196 阅读 · 1 评论