Tag: C/C++
All the articles with the tag "C/C++".
KMP算法
Published: at 12:07 PMKMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是实现一个next()函数,函...
C++大数相乘
Published: at 12:06 PMinclude <stdio.h> include <assert.h> void BigNumMultiply(const char str1, const char str2, char product) { assert(str1 = NULL && str2 = NULL && product = NULL); int i, j; int len1 = (int)strlen(str1); int len2 = (int)strlen(str2...
如何为包含指向(抽象)基类的指针的类定义拷贝构造函数或复制操作符
Published: at 12:04 PMinclude <iostream> using namespace std; // 如何为包含指向(抽象)基类的指针的类定义拷贝构造函数或复制操作符 class Shape { public Shape() { cout << "ShapeShape()" << endl; } virtual Shape() { cout << "ShapeShape()" << e...
常用CRT字符串函数源码
Published: at 12:02 PM////////////////////memcpy///////////////////////// void cdecl memcpy ( void dst, const void src, sizet count ) { void ret = dst; while (count--) { (char )dst = (char...
protobuf反射
Published: at 09:50 AMC++本身是不支持反射的,但protobuf可以,下面介绍反射的两种主要用途。 通过proto对象的名字来创建一个对象 googleprotobufMessage ProtoHelpcreateMessage(const stdstring &typeName) { googleprotobufMessage message = nullptr; const google...
模拟QThreadPool实现
Published: at 10:19 AMstdthreadhardwareconcurrency() 返回硬件线程上下文的数量,通常是CPU内核数量 template <class T> numericlimits 根据当前平台,获取指定类型的信息 > stdnumericlimits<int>min() 获取int最小值 > stdnumericlimits<unsigned long>max() 获...
std move和右值引用
Published: at 09:26 AM右值引用允许编程人员去避免不必要的内存拷贝,从而提高性能。 我们知道如果一个类A的成员变量中有指针,那么就要考虑深拷贝和浅拷贝了,深拷贝通常要实现下面几个函数: 构造函数 拷贝构造 赋值操作符 这样做是没问题的,但是会带来一个问题,会造成一些没必要的拷...
Qt只启动一个实例
Published: at 09:52 AM要想实现这个需求,就涉及到进程间通信了,怎样让当前启动的程序知道在它之前有没有程序在运行。 其实实现方法还是蛮多的,简单介绍几种: 两个进程读写同一个文件 创建一个有名字的事件CreateEvent 共享内存 下面是第三种方案的实现代码: ifndef RUNGUARDH d...
Qt重要特性
Published: at 08:55 AMQt基本特性 Qt是一个跨平台的C++开发框架,它包含了功能丰富的C++类库以及集成开发工具。 事件循环,事件过滤 Qt是事件驱动的,程序每个动作都是由某个事件所触发。QApplicationexec()会调用QEventLoop进入事件循环,此时程序会进入等待状态,等待处理各种事件。 ...
Qt简单截屏
Published: at 01:25 AM鼠标左键按下拉取截取范围,中间确认截图,右键取消截图。 ifndef GRABWIDGETH define GRABWIDGETH include <QWidget> include <QMouseEvent> class GrabWidget public QWidget { QOBJECT public explicit GrabWidget(QWidget parent = 0);...