- 博客(45)
- 资源 (12)
- 收藏
- 关注
原创 C++语法学习笔记十: Inline、const、mutable、this、static
实例代码:#include <iostream>#include <string>#include <vector>using namespace std;class Time {private: void initMillTime(int mls) { Millisecond = mls; } int Millisecond; //毫秒public: int Hour; //小时 int Minute;//分钟 int Secon
2020-06-24 20:34:04 191
原创 C++语法学习笔记九: 构造函数详解、explicit、初始化列表
实例代码:#include <iostream>#include <string>#include <vector>using namespace std;class Time {private: void initMillTime(int mls) { Millisecond = mls; } int Millisecond; //毫秒public: int Hour; //小时 int Minute;//分钟 int Seco
2020-06-24 18:06:15 178
原创 C++语法学习笔记八: 类型转换
实例代码:#include <iostream>#include <string>#include <vector>using namespace std;int main() { //一: 隐式类型转换;系统自动进行,不需要程序开发人员介入。 int m = 3 + 45.6;// 48 , 把小数部分截掉,也属于隐式类型转换的一种行为 double n = 3 + 45.6; //48.60000000 //二: 显示类型转换(强制类型
2020-06-24 10:45:02 152
原创 C++语法学习笔记七: 迭代器及其失效分析、避免迭代器失效
实例代码:#include <iostream>#include <string>#include <vector>using namespace std;struct student{ int num;}; struct conf { char itemName[40]; char itemContect[100];};char* getinfo(vector<conf*> & conflist, const c
2020-06-24 09:16:03 570
原创 C++语法学习笔记六:std::vector
实例代码:#include <iostream>#include <string>#include <vector>using namespace std;struct student { int num;};int main() { //一: vector类型简介,标准库 集合或者动态数组。我们可以把若干对象放在里边 //vector 它能把其他对象装进来,也被称为容器。 vector<int> vec; //表示这个ve
2020-06-23 19:03:12 278
原创 C++语法学习笔记五:std::string
实例代码:#include <iostream>#include <string>using namespace std;int main() { //一: string类型简介:C++标准库中的类型,代表一个可变长字符串; char str[100] = "I Love China";//C语言中用法 //二:定义和初始化string对象 string s11; //默认初始化,s1 = ""; ""空串,表示里边没有字符; string s12 =
2020-06-23 16:58:17 250
原创 C++语法学习笔记四: 函数新特性、内联函数、const详解
实例代码:#include <iostream>using namespace std;void func123(int, int);//函数声明(函数原型)void func123(int a, int) { //函数定义 return;}//auto: 变量自动类型推断auto func234(int a, int b) -> void;//函数声明auto func234(int a, int b) -> void {//函数定义 return;}
2020-06-23 15:33:26 141
原创 C++语法学习笔记三: 范围for、new内存动态分配、nullptr
实例代码:#include <iostream>using namespace std;int main() { //一:范围for语句:用于遍历一个序列 int v[]{ 12,13,14,15,16,18 }; //for (auto x : v) { //数组v中每个元素 依次放入x中并打印x值。把v每个元素拷贝到x中,打印x值: for (auto &x : v) { //省了拷贝这个动作,提高了效率 cout << x <<
2020-06-23 12:35:01 283
原创 C++语法学习笔记二: 命名空间简介、基本输入输出
实例代码:#include <iostream>using namespace std;namespace zhangsan { //定义个命名空间 zhangsan void func() { cout << "张三的func函数" << endl; }}namespace lisi { //定义个命名空间 lisi void func() { cout << "李四的func函数" << endl;
2020-06-23 11:22:07 167
原创 C++语法学习笔记一: 前言Auto、头文件防卫、引用、常量
实例代码:#include <iostream>using namespace std;void func(int &ta, int &tb) { ta = 4; //改变这个值会影响到外界 tb = 5;}constexpr int func1(int abc) { return 5;}int main() { //一:局部变量及初始化 C++ 11中引入大括号初始化语法 //随时用到随时定义 for (int i = 0; i <
2020-06-23 10:13:13 486
原创 数据结构与算法学习笔记六: 算法设计 - 动态规划
Dynamic programming (DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。由上可知: 动态规划算法的核心就是记住已经解决过的子问题的解;而记住求解的方式有两种:自顶向下的备忘录法。自低向上。自顶向下的备忘录法:斐波那契数列求解中运用动态规划...
2020-06-21 20:34:20 183
原创 数据结构与算法学习笔记五:算法设计 - 回溯
回溯算法实际上是一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标,但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 图的广度优先搜索DFS的实现就是借助了回溯算法的思想,除此之外很多经典的数学问题都可以运用回溯算法来解决比如数独、八皇后、0-1背包等等。...
2020-06-21 20:16:13 125
原创 数据结构与算法学习笔记四:算法设计 - 分治
分治,分治法是建基于多项分支递归的一种很重要的算法范式。字面上的解释是"分而治之",就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。分治和递归的区别:分治算法是一种处理问题的思想,递归是一种编程技巧。在实际情况中,分治算法大都采用递归来实现,并且用递归实现的分治算法的基本步骤为:分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题;解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题;合
2020-06-21 20:01:06 211
原创 数据结构与算法学习笔记三:算法设计 - 贪心
贪心算法(greedy algorithm),又称贪婪算法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。比如在旅行推销员问题中,如果旅行员每次都选择最近的城市,那这就是一种贪心算法。贪心算法在有最优子结构的问题中尤为有效。看这个算法的名字:贪心,贪婪,两个字的含义最关键,好像一个贪婪的人所有事情都只想到眼前,看不到长远,也不为最终的结果和将来着想,贪图眼前局部的利益最大化,接下来我们看几个关于贪心算法的案例情形。从这里我们能简单总结出贪心
2020-06-21 19:31:24 198
原创 数据结构与算法学习笔记二: 排序算法
最经典最常用的排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、计数排序、桶排序、基数排序。在这些排序算法中如果按照时间复杂度来分类大致可分为三类:O(n^2): 冒泡排序、选择排序、插入排序。O(n*logn): 归并排序、快速排序、希尔排序。O(n): 计数排序、基数排序、桶排序。学习这么多的排序算法,除了了解其原理、实现其代码外还要评判出各种排序算法之间性能、效率。评判排序算法好坏的标准 对于众多的排序算法我们要将它们做一个对比需要从如下三个方面着手:时间复
2020-06-21 18:08:20 263
原创 数据结构与算法学习笔记一: 时间复杂度空间复杂度
这篇主要讲解时间复杂度、空间复杂度概念。复杂度分析 数据结构和算法解决的是“快”和“省”的问题。即如何让代码运行的更快,如何让代码更省存储空间。因此代码的执行效率是一个非常重要的考量指标,那如何来衡量代码的执行效率呢?我们可以用时间复杂度、空间复杂度来对代码的执行效率、性能进行评估,也就是算法的复杂度分析。算法的复杂度分析主要包含两个方面: 时间复杂度分析 空间复杂度分析为什么要进行复杂度分析?1.和性能测试相比,复杂度分析不依赖执行环境、成本低、效率高、易操作、指导性强的特点。2
2020-06-21 10:09:56 267
原创 C++ 实现简单Tcp服务器端 -- Select方式 (包含客户端)
使用C++基于windows平台下实现Tcp聊天服务器端,Select方式main.cpp#include <WinSock2.h>#include <WS2tcpip.h>#include <iostream>using namespace std;#pragma comment(lib, "Ws2_32.lib")int main() { //初始化winsock的环境 WSADATA wd; if(WSAStartup(MAKE
2020-06-10 15:41:17 1423
原创 C++ 实现简单Tcp服务器端 -- 多线程方式(包含客户端)
一个简单的聊天服务器端程序,多线程设计,针对多客户端。windows平台服务器:#include <WinSock2.h>#include <WS2tcpip.h>#include <iostream>using namespace std;#pragma comment(lib, "ws2_32.lib")//一个简单的聊天程序 针对多客户端//stdcall 的线程处理函数DWORD WINAPI ThreadFun(LPVOID lpTh
2020-06-10 15:38:32 2722
原创 C++ 实现简单Tcp服务器端 Ipv6
使用C++基于windows平台下实现Tcp服务器端,Ipv6方式main.cpp#include <winsock2.h>//winsock的头文件#include <ws2tcpip.h>//sockaddr_in6的头文件#include <iostream>using namespace std;//指定动态库的lib文件#pragma comment(lib,"ws2_32.lib")//TCP服务端IPv6版int main() {
2020-06-10 15:34:47 1273
原创 C++ 实现简单Tcp客户端 Ipv6
使用C++基于windows平台下实现Tcp客户端请求,Ipv6方式main.cpp#include <winsock2.h>//winsock的头文件#include <ws2tcpip.h>//sockaddr_in6的头文件#include <iostream>using namespace std;//指定动态库的lib文件#pragma comment(lib,"ws2_32.lib")//TCP客户端int main() {
2020-06-10 15:31:59 855
原创 C++ 实现简单Tcp服务器端
使用C++基于windows平台下实现Tcp服务器端main.cpp#include <WinSock2.h>#include <WS2tcpip.h>#include <iostream>using namespace std;#pragma comment(lib, "ws2_32.lib")int main() { //初始化winsock2.2相关的动态库 WSADATA wd; // 获取socket相关信息 if(0 != WS
2020-06-10 15:30:29 1629
原创 C++ 实现简单Tcp客户端
使用C++基于windows平台下实现Tcp客户端请求main.cpp#include <winsock2.h>#include <WS2tcpip.h>#include <iostream>using namespace std;//指定动态库的lib文件#pragma comment(lib,"ws2_32.lib")int main() { //初始化winsock2.2相关的动态库 WSADATA wd; //获取socket相关信息
2020-06-10 15:27:25 2300
原创 C++ 实现简单Udp服务器
使用C++基于windows平台下实现Udp服务器main.cpp#include <winsock2.h>#include <WS2tcpip.h>#include <iostream>using namespace std;//添加动态库的lib#pragma comment(lib, "ws2_32.lib")//UDP服务端int main() { //初始化winsock2环境 WSADATA wd; if(WSAStart
2020-06-10 15:14:07 2433
原创 C++ 实现简单Udp客户端
使用C++基于windows平台下实现Udp客户端请求main.cpp#include <winsock2.h>#include <WS2tcpip.h>#include <iostream>using namespace std;//添加动态库的lib#pragma comment(lib, "ws2_32.lib")//UDP客户端int main() { //初始化winsock2环境 WSADATA wd; if(WSASta
2020-06-10 15:12:54 1707 1
原创 C++ 实现简单Http客户端--使用 curl网络库
借助curl网络库实现Http客户端,一种get请求,一种post请求。//get请求#include <stdio.h>#include <stdlib.h>#include <curl.h>/** ptr 表示收到服务器返回数据的首地址* size 表示返回每个数据的大小* nmemb 表示返回数据的个数* userdata 用户给该回调函数传递的形参 curl_easy_setopt(curl, CURLOPT_WRI
2020-06-10 15:10:17 1544
原创 C++ 实现简单Http服务器
实现一个简单的Http服务器,基于windows 平台。 总共五个文件 : HttpServer.hpp、HttpServer.cpp、Utils.hpp、Utils.cpp、main.cppUtils.hpp#include <vector>#include <string>#include <iostream>using namespace std;void splitStr(const string& s, vector<string
2020-06-10 15:02:06 3826
原创 C++ 实现简单Http客户端
实现一个简单的Http 客户端,基于windows 平台。总共三个文件 : HttpClient.hpp、HttpClient.cpp、main.cppHttpClient.hpp#include <WinSock2.h>#include <WS2tcpip.h>#include <iostream>using namespace std;#pragma comment(lib, "ws2_32.lib")class HttpClient {
2020-06-10 14:57:56 4019 1
原创 C++对象模型学习笔记二十: 单类单继承虚函数下的数据成员布局
知识点:一:单个类带虚函数的数据成员布局类中引入虚函数时,会有额外的成本付出(1)编译的时候,编译器会产生虚函数表,参考三章五节(2)对象中会产生 虚函数表指针vptr,用以指向虚函数表(3)增加或者扩展构造函数,增加给虚函数表指针vptr赋值的代码,让vptr指向虚函数表;(4)如果多重继承,比如你继承了2个父类,每个父类都有虚函数的话,每个父类都会有vptr,那继承时,子类就会把这两个vptr都继承过来,如果子类还有自己额外的虚函数的话,子类与第一个基类共用一个vptr(三章四节);(5
2020-06-10 11:31:55 134
原创 C++对象模型学习笔记十九: 单一继承下的数据成员布局
知识点:(1)一个子类对象,所包含的内容,是他自己的成员,加上他父类的成员的总和;(2)从偏移值看,父类成员先出现,然后才是孩子类成员。linux上windows上数据布局不一样,说明:a)编译器在不断的进步和优化;b)不同厂商编译器,实现细节也不一样;c)内存拷贝就要谨慎;测试代码如下:// 该实例演示单一继承下的数据成员布局//#include <iostream>#include <time.h >#include <stdio.h>us
2020-06-10 10:37:12 102
原创 C++对象模型学习笔记十八: 数据成员存取
知识点:一:静态成员变量的存取静态成员变量,可以当做一个全局量,但是他只在类的空间内可见;引用时用 类名::静态成员变量名静态成员变量只有一个实体,保存在可执行文件的数据段的;二:非静态成员变量的存取(普通的成员变量),存放在类的对象中。存取通过类对象(类对象指针)测试代码如下:// 该实例演示存取静态成员变量 和普通成员变量的本质#include <iostream>#include <time.h >#include <stdio.h>using
2020-06-10 10:24:02 140
原创 C++对象模型学习笔记十七: 数据成员布局
知识点:一:观察成员变量地址规律普通成员变量的存储顺序 是按照在类中的定义顺序从上到下来的;比较晚出现的成员变量在内存中有更高的地址;类定义中pubic,private,protected的数量,不影响类对象的sizeof;二:边界调整,字节对齐某些因素会导致成员变量之间排列不连续,就是边界调整(字节对齐),调整的目的是提高效率,编译器自动调整;调整:往成员之间填补一些字节,使用类对象的sizoef字节数凑成 一个4的整数倍,8的整数倍;为了统一字节对齐问题,引入一个概念叫一字节对齐(不对齐
2020-06-10 10:13:00 107
原创 C++对象模型学习笔记十六: 进程内存空间布局
知识点:不同的数据在内存中会有不同的 保存时机,保存位置当运行一个可执行文件时,操作系统就会把这个可执行文件加载到内存,形成进程,此时进程有一个虚拟的地址空间(内存空间)linux有个nm命令:能够列出可执行文件中的全局变量存放的地址;测试代码如下:// 演示进程下内存分布//#include <iostream>#include <time.h >#include <stdio.h>using namespace std;int *ptest
2020-06-10 10:06:27 162
原创 C++对象模型学习笔记十五: 数据成员绑定时机
测试代码如下:// 演示变量和类型 在类中定义和在全局中定义, 其可见性及解析绑定//#include <iostream>#include <time.h >#include <stdio.h>using namespace std;//string myvar= "I Love China!"; //全局量,字符串型typedef string mytype;//定义一个类class A{ typedef int mytype;pub
2020-06-10 10:00:06 120
原创 C++对象模型学习笔记十四: 单纯的类不纯时引发的虚函数调用问题
单纯的类:比较简单的类,尤其不包含 虚函数和虚基类。 虚函数,多态,这种概念专门给指针或者引用用的;测试代码如下:// 该实例演示在不不纯类(包含虚函数和虚基类)的构造函数中使用memset或者拷贝构造函数中使用memcpy方法,会出现程序崩溃的情形。// 在栈声明的对象 调用虚函数和在堆上声明的对象 调用虚函数是不同的,一个是静态联编,一个是动态联编通过虚函数表获取虚函数指针后调用。// 总结: 虚函数,多态,这种概念专门给指针或者引用用的;#include <iostre
2020-06-10 09:54:21 156 1
原创 C++ 对象模型学习笔记十三: 辅助工具分析查看类的虚函数表
vs 下 cl.exe:编译链接工具cl /d1 reportSingleClassLayoutDerived project100.cpp // cl /d1 reportSingleClassLayout类名 所在cpp文件名gcc 下g++ -fdump-class-hierarchy -fsyntax-only 3_4.cpp知识点:vptr(虚函数表指针)什么时候创建出来的?vptr跟着对象走,所以对象什么时候创建出来,vptr就什么时候创建出来。运行的时候;实际上,对于这种有虚
2020-06-10 09:38:41 317 1
原创 C++ 对象模型学习笔记十二: 多重继承虚函数表分析
知识点:(1)一个对象,如果它的类有多个基类则有多个虚函数表指针(注意是两个虚函数表指针,而不是两个虚函数表);在多继承中,对应各个基类的vptr按继承顺序依次放置在类的内存空间中,且子类与第一个基类共用一个vptr(第二个基类有自己的vptr);(2)下图适合vs2017(2.1)子类对象ins里有两个虚函数表指针,vptr1,vptr2(2.2)类Derived有两个虚函数表,因为它继承自两个基类;(2.3)子类和第一个基类公用一个vptr(因为vptr指向一个虚函数表,所以也可以说子类和第
2020-06-10 09:31:57 645 1
原创 C++ 对象模型学习笔记十一: 虚函数表分析
知识点:(1)一个类只有包含虚函数才会存在虚函数表,同属于一个类的对象共享虚函数表,但是有各自的vptr(虚函数表指针),当然所指向的地址(虚函数表首地址)相同。(2)父类中有虚函数就等于子类中有虚函数。话句话来说,父类中有虚函数表,则子类中肯定有虚函数表。因为你是继承父类的。也有人认为,如果子类中把父类的虚函数的virtual去掉,是不是这些函数就不再是虚函数了?只要在父类中是虚函数,那么子类中即便不写virtual,也依旧是虚函数。但不管是父类还是子类,都只会有一个虚函数表,不能认为子类中有一
2020-06-10 09:20:34 305
Qt5 全局快捷键库及例子.zip
2020-05-07
eXeScope.zip
2020-04-09
InstallShield 2019 完美亲测可用版下载.txt
2020-03-06
.NetReactor V6_0_0_0.zip
2020-03-04
toLua++工具及易懂演示实例.zip
2019-09-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人