C/C++
卓耿Drogon
醉舞经阁半卷书,坐井说天阔
展开
-
设计模式-建造者模式
构建型设计模式包括:简单工厂模式、工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。个人认为,原型模式,在java中用处较大,在c++中可以用拷贝构造函数代替。本次实现建造者模式,主要可以解决构造函数参数过长的场景。#ifndef BUILDER_MODE#define BUILDER_MODE#include <QDebug>class CSendLc{public: class CBuild{ public: int a;原创 2022-02-10 15:29:23 · 636 阅读 · 0 评论 -
C++ LIST VECTOR MAP的底层实现
本文参考了网上文章,一搜一大把。LIST支持快速增删,底层使用循环双向链表实现。VECTOR支持快速随机访问,底层使用数组实现。当新增数据,超过已申请的剩余空间时,将会自动resize重新申请全部空间,将已有数据和新增数据拷贝给新申请的空间,然后释放原先申请的空间。MAPKEY值唯一,底层使用红黑树实现,也就是平衡二叉数。...原创 2020-09-04 17:16:26 · 412 阅读 · 0 评论 -
设计模式-单例模式
饿汉子模式#include <QDebug>class CReject{public: static CReject* GetInstance() { return spInst; //return &Inst; } void PrintReject(); void SetIndex(int a){m_index=a;}public://真正的单例需要把拷贝构造函数私有化 CReject(const原创 2022-01-26 11:15:43 · 724 阅读 · 0 评论 -
Lambda Python与C++11
Lambda Python与C++11匿名函数,简洁,高效很多语音都支持匿名函数,主要是简洁和高效。Python的相对容易,C++11的语法复杂,但作为程序员必须得掌握。原创 2021-12-01 19:22:57 · 1116 阅读 · 0 评论 -
函数参数的压栈顺序
对于一般的c++是从右边开始压栈,可以看两个例子: int arr[]={1,2,3,4 }; int *ptr=arr; PrintMN(*(++ptr),*ptr); ptr=arr; PrintMN(*ptr,*(++ptr));void PrintMN(int m, int n){ qDebug()<<'m'<<m; qDebug()<<'n'<<n;}上文在QT的输出结果是m 2原创 2021-12-01 19:11:01 · 995 阅读 · 0 评论