
C++
文章平均质量分 80
bostonAlen
你的渴望是你能力唯一真正的限制
展开
-
c++ 内存管理二:重载(接管内存管理工具)
重载运算符来自定义内存分配的行为。重载运算符允许我们使用自定义的内存分配逻辑,例如使用池分配、内存池等。原创 2023-07-02 20:34:49 · 866 阅读 · 0 评论 -
c++ 内存管理一:初识内存分配工具
在C++中,有几种常用的内存分配工具可以帮助进行动态内存管理。从c++应用程序自上而下,通常会有这样的几种分配内存的方式,当然最终都是直接或间接的调用系统的API。侯捷 c++内存管理学习总结笔记。原创 2023-07-01 23:29:01 · 763 阅读 · 0 评论 -
数据结构-图(c++)
图在数据结构中有重要作用原创 2022-03-26 01:18:50 · 8087 阅读 · 2 评论 -
c c++到底有什么区别
c和c++本质区别在哪儿?原创 2022-01-07 20:25:47 · 825 阅读 · 2 评论 -
c++ STL
本文仅仅对stl基本理论以及常用容器、算法进行简单概括,对常用的数据结构使用特点进行了描述,列举了容器的部分API,简述了API用途,方便查阅,对于使用中我所遇见的问题进行了总结,并给出了部分解决建议。原创 2021-12-25 14:30:06 · 1600 阅读 · 1 评论 -
常用设计模式(原型模式)-c++版
1、场景需要从A的实例得到一份与A内容相同,但是又互不干扰的实例的话,就需要使用原型模式原型模式和建造者模式、工厂方法模式一样,都属于创建型模式的一种。简单的来说,我们使用原型模式,就是为了创建对象。但是,在以下场景下,使用原型模式是最好的选择:当我们的对象类型不是开始就能确定的,而这个类型是在运行期确定的话,那么我们通过这个类型的对象克隆出一个新的对象比较容易一些;当我们需要一个对象在某个状态下的副本,此时,我们使用原型模式是最好的选择;例如:一个对象,经过一段处理之后,其内部的状态发生了变化;这原创 2021-07-29 16:25:42 · 379 阅读 · 0 评论 -
常用设计模式(单件模式-工厂模式demo)-c++版
1、定义保证一个类仅有一个实例,并提供该实例的全局访问点。2、示例原始的单例模式单例模式要做如下事情:不能通过构造函数构造,否则就能够实例化多个。构造函数需要私有声明保证只能产生一个实例下面是一个简单的实现:class Singleton{ private: static Singleton *instance; Singleton(){}; public: static Singleton *getInstance() { if原创 2021-07-29 16:07:15 · 370 阅读 · 0 评论 -
常用设计模式(观察者模式)-c++版
1、动机(a)在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。(b)使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。2、定义定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(Subject)的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。3、示例注意:这里是伪代码场景:做一原创 2021-07-21 16:42:15 · 194 阅读 · 3 评论 -
常用设计模式(策略模式)-c++版
1、动机(a)在软件构建过程中,某些对象使用的算法可能多种多样,常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。(b)如何在运行时根据需要透明地更改对象的算法?将算法与对象本身解耦,从而避免上述问题?2、定义定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。3、举例有这样一个场景,我们需要计算中国、美国、德国的国家税法,有一个SalesOrder类,我原创 2021-07-19 16:46:51 · 178 阅读 · 0 评论 -
基于TCP的Qt网络通信
使用 Qt 提供的类进行套接字通信比使用标准 C API 进行网络通信要简单(因为在内部进行了封装)原始的 TCP 通信流程 Qt 中的套接字通信流程如下:1 服务器端1.1 通信流程创建套接字服务器 QTcpServer 对象通过 QTcpServer 对象设置监听,即:QTcpServer::listen()基于 QTcpServer::newConnection() 信号检测是否有新的客户端连接如果有新的客户端连接调用 QTcpSocket *QTcpServer::nextPending原创 2021-07-16 15:49:41 · 470 阅读 · 5 评论 -
C++11 常见使用特性(一)
本文详细描述了c++11的新增的某些关键字的介绍,以及怎么相互搭配使用。原创 2021-06-30 21:02:20 · 761 阅读 · 4 评论 -
MFC CListCtrl解决闪烁问题(采坑无数)
https://blog.csdn.net/jiangqin115/article/details/44904085https://my.oschina.net/laopiao/blog/99320https://bbs.csdn.net/topics/100134274此几处虽介绍了几种方法,但实际并不好用。中间踩坑过程我不赘述了。这里要注意CListCtrl与CMFCListCtrl有所区别,区别在于CListCtrl的GetHeaderCtrl()返回的是指针,而CMFCListCtrl的Get原创 2021-06-29 03:40:14 · 1343 阅读 · 0 评论 -
boost读取xml文件
参考:https://www.2cto.com/kf/201210/162103.htmlconf.xml<?xml version="1.0" encoding="utf-8"?><root> <strage name="asd" alias="13" classId="13.22">r <id>12</id> ...转载 2020-02-29 18:34:03 · 643 阅读 · 1 评论 -
Win-服务器端 IOCP模型
1、IOCP概念输入输出完成端口(Input/()utputCompletionPort,IOCP),是支持多个同时发生的异步1/0操作的应用程序编程接口,在WindowsNT的3.5版本以后,或AIX5版以后或Solaris第十版以后,开始支持。IOCP特别适合c/s模式网络服务器端模型。因为,让每一个socket有一个线程负责同步(阻塞)数据处理,one-thread-per-client...原创 2019-12-30 20:39:33 · 715 阅读 · 0 评论 -
C++如何正确使用智能指针?看完这4个点你就明白了
转自:https://www.toutiao.com/i6744265558922887694/?tt_from=dingtalk&utm_campaign=client_share×tamp=1570943692&app=news_article&utm_source=dingtalk&utm_medium=toutiao_ios&re...转载 2019-11-18 23:38:15 · 662 阅读 · 1 评论 -
C++ 实现统计vector中各个元素的个数(去重)
简单说一下代码。函数用函数模板,泛型编程,提高了复用性,缺点是double类型一般比较会有一个误差值。check就不详细说了,可看main函数使用示例。#include <iostream>#include <vector>#include <string>#include <map>using namespace std;temp...原创 2019-10-20 21:11:05 · 13433 阅读 · 0 评论 -
C/C++大公司面试题(四)
(一) 初级题什么是预编译,何时需要预编译:答:(1) 总是使用不经常改动的大型代码体(2) 程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头char * const pchar const * pconst char *p上述三个有什么区别?答:char * const p; //常量指针,p的...原创 2019-06-20 10:57:30 · 3100 阅读 · 0 评论 -
二叉树遍历(前、中、后)
先讲解图中几种遍历:其实每种遍历的规则都是针对于节点来说,即每个节点需要满足相应的规则。先序遍历:顺序为根、左、右,则每个节点需满足此条件。从整体来看,毫无疑问A是根节点,那么之后是左边B,我们需要将B所有后代遍历完整体才是左,那么对于B则又需要遵从此规则,即B、D、E,而因为此时E有子节点,那么对于E而言,则是E、H,所以根、左边遍历完成是A、B、D、E、H,那么右边也是同样道理,根、左...原创 2019-07-11 15:53:15 · 363 阅读 · 0 评论 -
c++ 链队基本操作案例
// 队列的链式存储结构 #include <iostream>#include <fstream>using namespace std;#define OK 1#define ERROR 0#define OVERFLOW -1typedef char QElemType;typedef char SElemType;typedef int St...原创 2019-06-23 14:09:03 · 589 阅读 · 0 评论 -
c++ 循环队列基本操作案例
循环队列其实是为了解决顺序栈的假溢出。设队列大小是M。这里特别提出一点就是计算队列长度(Q.rear - Q.front + MAXQSIZE) % MAXQSIZE;此处说明原因,因为此处为循环队列。因为循环队列中,当Q.rear的值小于Q.front时,他们的差是负数要加上队列最大长度才是队列的长度,而如果他们的差大于0再加上最大长度时求余可以得到队列的长度。/* 循环队列基本操...原创 2019-06-23 14:05:28 · 1597 阅读 · 1 评论 -
林锐高质量c++问题总结
1 零值比较**2 sizeof3 循环语句效率4 为什么需要常量5 const与#define6 函数参数7 Getchar()8 函数返回值9 断言assert10 引用与指针11 引用的作用12 内存分配方式13 指针与数组14 野指针15 new与malloc16 同名17 赋值与拷贝18 虚函数生命历程19 初始化列表...原创 2019-08-04 22:47:51 · 420 阅读 · 1 评论 -
C++ 链表实现
Node.h#pragma onceclass Node{public: int data; Node *next;};List.h#pragma once#include &quot;Node.h&quot;#ifndef LIST_H#define LIST_Hclass List{pub...原创 2019-01-09 01:40:19 · 309 阅读 · 0 评论 -
Qt学习笔记一
1 QT应用程序框架1 MingW编译(GCC)2 窗口基类Qwidget3 窗口创建默认是隐藏,人为show4 return a.exec()让程序一直执行等待用户操作(即事件发生)2 项目文件1 .pro头文件分模块qmake2 版本3 程序名4 指定生成如app5 原文件头文件3 信号和槽1 软件模拟中断,感兴趣就做出反应2 connect(&amp;amp;b,&amp;amp;...原创 2019-01-09 16:13:07 · 750 阅读 · 1 评论 -
c++基础(初识c++)
1 c++特点2 c++对c的扩充13 c++对c的扩充24 动态内存分配5 内联函数6 struct7 面向对象原创 2019-01-22 21:49:56 · 1052 阅读 · 0 评论 -
关于c++ char转string时出现的乱码问题
今天刷题遇到的问题。大致是这样,需要将一个字符串提取中间一部分,然后转为整形,通过整形转化为字符型,最后返回一个字符串。若是用char c ;string s = &c;则会出现乱码,内容为字符串s加上乱码。最后发现原因是:char没有’\0’作为字符串的边界,当输出string时,string可以看成是数组,因为string接受一个地址,那必然是首地址,但string长度并非...原创 2019-03-11 23:39:11 · 6053 阅读 · 0 评论 -
c语言 一个函数得到两数的和、差、积
最近温习指针部分,看到一个很有趣的问题,想用一个函数得到两数的多种结果。其基本原理就是函数参数指针传递传的是地址;形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作。反过来就是说实参能获取到经函数处理后的数据。void Func(int x, int y, int* sum,int* differ,int* product){ *sum = x + y; *di...原创 2019-03-12 22:47:55 · 4792 阅读 · 0 评论 -
C/C++ 大公司笔试题(一)
1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: " 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。2、如何引用一个已经定义过的全局变量? 答:ext...原创 2019-06-19 14:07:08 · 5375 阅读 · 0 评论 -
C/C++ 大公司笔试题(二)
12 以下三条输出语句分别输出什么?char str1[] = "abc";char str2[] = "abc";const char str3[] = "abc"; const char str4[] = "abc"; const char* str5 = "abc";const char* str6 = "abc";cout << boolalpha <&...原创 2019-06-20 10:12:06 · 1787 阅读 · 0 评论 -
C/C++ 大公司笔试题(三)
1.是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态?virtual修饰符会被隐形继承的。private 也被集成,只事派生类没有访问权限而已virtual可加可不加子类的空间里有父类的所有变量(static除外)同一个函数只存在一个实体(inline除外)子类覆盖它的函数不加virtual ,也能实现多态。在子类的空间里,有父类的私...原创 2019-06-20 10:28:38 · 14764 阅读 · 2 评论 -
C/C++ 最常见50道面试题
C/C++经典面试题面试题 1:变量的声明和定义有什么区别为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明,但是只在一个地方定义。加入 extern 修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义。说明:很多时候一个变量,只是声明不分配内存空间,直到具体使用时才初始化,分配内存空间,如外部变量。面试题 2:写出 bool 、int、 .........原创 2019-06-20 15:12:32 · 225494 阅读 · 34 评论 -
c++ 有序链表的合并案例(文件)
双向链表定义原创 2019-06-22 16:06:34 · 664 阅读 · 0 评论 -
c++ 链栈的基本操作案例(文件)
// 链栈的基本操作#include <iostream>#include <fstream>using namespace std;#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status;typedef char SElemType;// 定义链栈类型typedef st...原创 2019-06-22 16:06:15 · 1235 阅读 · 0 评论 -
c++ 顺序栈基本操作案例(文件)
// 顺序栈的基本操作#include <iostream>#include <fstream>using namespace std;#define OK 1#define ERROR 0#define OVERFLOW -2#define MAXSIZE 50 // 存储空间的初始分配数量typedef int Status; // 返...原创 2019-06-21 22:42:41 · 1504 阅读 · 1 评论 -
c++ vs生成动态链接库dll(步骤)
生成动态链接库的步骤方法:1.新建DLL项目 附加选项:空项目2.建立源文件(不需要主函数,只写动态调用的函数)3.建立头文件(写函数申明)4.新建源文件dllmain.cpp 内容如下:// dllmain.cpp : 定义 DLL 应用程序的入口点。#include &lt;windows.h&gt;BOOL APIENTRY DllMain(HMODULE hModule,D...原创 2019-01-23 20:49:51 · 1979 阅读 · 0 评论