C++
想要飞的鱼儿
这个作者很懒,什么都没留下…
展开
-
三种快速排序以及快速排序的优化
1、快速排序的基本思想: 快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。2、快速排序的三个步骤:(1)选择基准:在待排序列中,按照某种方式挑出一个元素,作为 "基准"(pivot)(2)分割操作:以该基准在序列中的实际位置,把序列分成两个子序列。此时,在基准左边的元素都比该基准小,在基准右边的元素都比基准大(3)递归地对两个序列进行快速排序,直到序列为空或者只..转载 2020-09-25 21:12:40 · 528 阅读 · 1 评论 -
【char待整理】C++中string,char[]与char +关系、区别与转换
https://www.cnblogs.com/weekbo/p/9628506.htmlhttps://www.baidu.com/s?tn=80035161_2_dg&wd=MultiByteToWideCharhttps://max.book118.com/html/2017/0128/87233714.shtm原创 2020-07-02 12:51:53 · 3017 阅读 · 0 评论 -
左值引用和右值引用、move函数
左值是可以放在赋值号左边可以被赋值的值;左值必须要在内存中有实体;右值当在赋值号右边取出值赋给其他变量的值;右值可以在内存也可以在CPU寄存器。一个对象被用作右值时,使用的是它的内容(值),被当作左值时,使用的是它的地址。左值左值:既可以放在等号左侧,也可以放在等号右侧的变量。例如下面的例子:int a = 1;int& b = a上面的变量a既可以放在等号的左侧也可以放在等号的右侧,所以她是左值。右值右值:只可以放在等号右侧的变量。例如下面的例子:int a =原创 2020-07-02 10:24:38 · 603 阅读 · 0 评论 -
windows下 C 程序 调用其他程序常见新的进程CreateProcess以及通过TerminateProcess终止进程
WinAPI执行外部程序和创建新进程:CreateProcess(NULL,cmdOp,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi)执行一个外部程序实质上可以认为就是创建一个进程,windows系统下创建一个进程意味着:1、创建一个内核对象:内核对象是windows系统用于管理进程的一个工具,可以认为是一个数...原创 2020-01-14 20:20:23 · 1514 阅读 · 1 评论 -
大型网站技术架构-技术汇总
总体架构图1 加速网站响应反向代理(Reverse Proxy)和CDN(Content Delivery Network内容分发网络),CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的...转载 2019-11-19 21:13:51 · 270 阅读 · 0 评论 -
C++项目在不同版本vs下同时开发关于静态库等兼容性问题
由于不同vs版本使用的平台工具集版本号不同,通过在属性页 - 配置属性 - 常规 - 平台工具集 填上$(DefaultPlatformToolset) ,大概意思就是使用默认工具集版本号,而这个版本号等于当前IDE的版本号,比如2012就是v110。可以避免在切换vs开发环境时手动选择平台工具集。静态库的问题。虽然VS2015~2019 ABI兼容。但是由于VS默认开启全程序优化(/GL),...原创 2019-08-30 19:33:08 · 5230 阅读 · 2 评论 -
C++堆被破坏 运行时库
每个进程都有一个默认堆,在进程初始化的时候会创建这个默认堆,可以通过GetProcessHeap()获取默认堆的句柄。使用CRT时,也会有一个CRT堆,VS项目属性 ~ C/C++ ~ 代码生成 ~ 运行库,如果选择多线程DLL,则CRT堆初始化在DLL中,如果选择多线程,则会在进入_tmain函数之前。要在同一个DLL中对变量进行内存分配和释放的根本原因在于:每个DLL都要保存一份全局变量和...原创 2019-08-09 21:49:52 · 2433 阅读 · 0 评论 -
C++运行时内存的分配(堆、栈等)、DLL有关的CRT堆
程序运行时分配的内存位置栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量值等,其操作方法类似数据结构中的栈。存放的是局部变量(在方法和语句块内部定义的变量),当方法和语句块一结束,空间马上释放。 堆区(heap):一般由程序员分配释放,与数据结构中的堆毫无关系,分配方式类似于链表。存放的是成员变量(也叫属性,在方法外,在类里,定义的变量),随着对象而产生,随对象销毁而销毁...原创 2019-08-09 22:08:01 · 1048 阅读 · 0 评论 -
C++日志库log4cplus的使用
log4cplus在vs环境下库的生成的配置可以参考https://blog.csdn.net/weixin_42259823/article/details/97235398log4cplus是通过配置文件来定义日志的输出方式。log4cplus日志配置说明文档可以参考https://wenku.baidu.com/view/1569e8ad453610661ed9f4ca.htmlC+...原创 2019-07-25 09:33:58 · 805 阅读 · 1 评论 -
log4cplus在vs环境下的配置使用
下载地址:https://sourceforge.net/projects/log4cplus/files/log4cplus-stable/以log4cplus-1.2.1为例,最新版本log4cplus-2.0.4编译时使用的头文件会报错,编译的库可以正常使用。C/C++log日志库比较:https://blog.csdn.net/gatieme/article/details/506...原创 2019-07-25 10:35:20 · 473 阅读 · 0 评论 -
C++对window系统注册表的操作
window打开注册表单击左下角的【开始】按钮, 单击右侧的【运行】命令(或者window + r 组合键),输入regedit 。确定后弹出注册表编辑器。可以添加和删除项(谨慎操作)。C++使用CRegKey类对注册表操作要想使用CRegKey类,需要包含头文件atlbase.h。CRegKey提供了对系统注册表的操作方法,通过CRegKey类,可以方便的打开注册表的某个分支或子...原创 2019-07-13 17:40:26 · 391 阅读 · 0 评论 -
C++中的一些特殊用处
#pragma once是一个比较常用的C/C++杂注,只要在头文件的最开始加入这条杂注,就能够保证头文件只被编译一次。#pragma once是编译器相关的,有的编译器支持,有的编译器不支持,具体情况请查看编译器API文档,不过现在大部分编译器都有这个杂注了。#ifndef,#define,#endif是C/C++语言中的宏定义,通过宏定义避免文件多次编译。所以在所有支持C++语言的编译...原创 2019-06-20 21:20:48 · 278 阅读 · 0 评论 -
c++面向对象程序设计-类和对象(基础)
目录类的数据成员和成员函数在类体之外定义成员函数内联函数对象的创建类成员的访问构造函数和析构函数复制构造函数对象指针this指针静态类成员静态数据成员的声明,初始化与访问静态成员函数动态内存分配类的数据成员和成员函数class 类名{ //类体 private: //<私有数据成员,私有成员函...原创 2019-05-28 20:15:38 · 835 阅读 · 0 评论 -
C++在构造函数中初始化成员变量提高效率的方法
在构造函数实现时,在函数名后初始化成员变量。只能用于构造函数中。ClassName::ClassName(parameter):MemberVariable1(value),...{ MethodBody }初始化成员变量,比在{}中赋值效率要高。静态变量必须在外部声明,不能通过该方式初始化。...原创 2019-05-31 15:10:30 · 1229 阅读 · 0 评论