- 博客(22)
- 资源 (9)
- 收藏
- 关注
转载 windows vscode安装go插件
vscode中有很多go的相关插件,非常好用如下:gocodegopkgsgo-outlinego-symbolsgurugorenamegomodifytagsgoplayimplgodefgoreturnsgolintgotestsdlv但是使用vscode 检查插件安装,会出现安装失败的情况。下面介绍如何安装失败的插件进行如下命令进行目录切换:cd ...
2019-01-30 20:42:38 2149
原创 排序-----选择排序
选择排序算法思想:首选从数组中选择最小的一个元素,将其和第一个位置的数据交换 接着从n-1个数据中选择次小的一个元素,将其和第二个位置交换元素 不断重复,知道最后两个元素交换,完成排序void SelectSort(int *arr, int len){ for (int i=0; i<len; ++i) { for (int j=i+1; j<len; ++j)...
2019-01-29 12:00:56 97
原创 排序----插入排序
插入排序算法基本思路:首先对前两个数据进行大小比较 接着从第三个数与拍好的前两个数进行比较,将第三个数插入到合适的位置 不断重复上述过程,直到把最后一个元素插入到合适的位void InsertSort(int *arr, int len){ for (int i=1; i<len; ++i) { int tmp = arr[i]; for (int j=i-1; j...
2019-01-29 11:54:17 91
原创 排序---冒泡排序
基本思路:通过相邻数据的交换来达到排序的目的排顺流程:对数组的各数据,依次比较相邻的两个元素的大小 如果前面的数据大于后面的数据就交换位置。经过第一轮可以把最大值求出来,排在最后端 然后,再以同样的方法把剩下的元素进行比较,最后便可以得到从小到大的排好序的数组void BubbleSort(int* arr, int len){ for (int i=0; i<len...
2019-01-25 12:38:40 142
原创 分治算法找假币问题
int CheckMoney(int arr[], int left, int right){ int sum1=0, sum2=0, sum3=0; if ((right-left+1)%2 == 0) //偶数 { if (left + 1 == right) { if (arr[left] < arr[right]) { return left;...
2019-01-25 11:34:37 5106 1
原创 求二叉树节点值的和
struct node{ node* left; node* right; int value; node(int v):value(v),left(nullptr),right(nullptr){}};int sum(const node* root){ if (root != nullptr) { if (root->left == nullptr &&...
2019-01-24 21:54:08 4811
原创 字符串中查找子串,并返回子串相对字符换的位置
int FindSubstring(const char* all, const char* sub){ int all_len = strlen(all); int sub_len = strlen(sub); int i = 0, j = 0; for (;i<all_len;++i) { if (all[i] == sub[0]) { for (j=1; j...
2019-01-24 21:02:06 724
原创 判断一个十位数是不是回文数
回文数的特点是,若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。12321是回文数,1233不是bool IsPlaindrome(int num){ std::vector<int> tmp; int last = num % 10; int remind = num; while (remind>0) { tmp.push_back(l...
2019-01-24 20:48:47 293
原创 结构体大小的计算
结构体中的成员可以是不同的数据类型,成员按照定义时的顺序依次存储在连续的内存空间。和数组不一样的是,结构体的大小不是所有成员大小简单的相加,需要考虑到系统在存储结构体变量时的地址对齐问题。首先需要知道偏移量的定义,结构体变量中成员的地址和结构体变量地址的差值。结构体大小等于最后一个成员的偏移量加上最后一个成员的大小。显然,结构体变量中第一个成员的地址就是结构体变量的首地址,因此,第一个成员的偏...
2019-01-23 21:51:13 169
翻译 shared_ptr中高级应用
在编写基于虚函数的多态代码时,指针的类型转换很有用,比如把一个基类的指针转换成一个派生类的指针或者反过来。但是对于shared_ptr不能使用诸如static_cast<T*>(p.get())的形式,这样会导致转型后的指针无法再被shared_ptr正确管理。为了支持类似的用法,shared_ptr提供了类似的转型函数,static_pointer_cast<T>()...
2019-01-21 18:37:34 1467 1
翻译 API包装器模式--外观模式
外观模式能够为一组类提供简化的接口。它实际上定义了一个更高层次的接口,以使底层子系统更易于使用。外观模式是多组件包装器的一个示例。外观模式还可以将底层子系统和公有接口完全分离,进而底层类不可再访问。...
2019-01-16 22:46:45 404
原创 API包装器模式 ---适配器模式
适配器模式将一个类的接口转换成一个兼容的但不相同的接口。与代理模式的相似之处是,适配器模式也是一个单一组件包装器,但是适配器类和原始类的接口可以不相同。此模式能够为现有API暴露一个不同的接口,进而和其他代码集成。适配器可以用“组合”或者“继承”来实现。这两种类型分别称为对象适配器和类适配器。强制API始终保持一致性 包装API的依赖库 转换数据类型 为API暴露一个不同的调用约定...
2019-01-16 22:14:40 493
原创 CreateEventA 函数理解
HANDLE CreateEventA( LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCSTR lpName);lpEventAttributes,一个指向 ...
2019-01-16 13:45:28 3577
原创 API 包装器模式 ---代理模式
编写基于另外一组类的包装器接口是一项常见的API设计任务。结构化设计模式可以处理接口包装任务。按照包装器层和原始接口的差异递增程度划分,它们以此是:代理、适配器和外观。代理模式代理模式为另一个类提供了一对一的转发接口,调用代理类的function()将调用原始类中的function(),也就是说代理类和原始类有相同的接口。此模式的实现,通常是代理类中的存储原始类的一个指针,然后代理类中...
2019-01-15 23:22:47 247
原创 python 中的迭代器
迭代是访问集合元素的一种方式,迭代器是一个可以记住遍历位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不能后退。1、可迭代对象以直接作用于for循环的数据类型有以下几种:一类是集合数据类型,如list、tuple、dict、set、str等一类是generator,包括生成器和带yield的generator function。这些可...
2019-01-13 18:34:13 101
原创 python 中的生成器
定义:python中一边循环一边计算的机制,成为生成器:generator。生成器是一个函数,它记住上一次返回时在函数体中的位置。对生成器的第二次(或第n次)调用跳转至该函数中间,而上次调用的所有局部变量都保持不变。生成器不仅“记住”了它数据状态,还记住了它在流控制构造中的位置。生成器的特点:1、节约内存2、迭代到下一次的调用时,所使用的参数都是第一次所保留下的,即是说,在整个所...
2019-01-13 18:19:47 96
原创 C++ 中创建单例
在设计单例的时候,要考虑C++语言的下列特征1、如果不想让客户能够创建新的实例,可以声明私有构造函数。2、如果想让单例不可复制,以确保不能创建第二个实例, 也可以声明私有构造函数和私有赋值运算符。3、如果禁止客户删除单实例,可以声明私有构造函数。4、获取单例,可以反馈指针也可以返回引用,防止客户删除单实例,最好返回引用C++中单实例的形式如下class Singleton...
2019-01-08 22:44:22 770
原创 设计模式简单介绍
设计模式是针对软件设计问题的通用解决方案,设计模式大致分为以下三大类。创建性模式抽象工厂模式: 创建一组相关的工厂建造者模式: 将复杂的对象的构造与表示分离工厂方法模式: 将类的实例化推迟到子类中原型模式: 指定类的原型实例,克隆该实例可以生成新的对象单例模式: 确保类只有一个实例结构型模式适配器模式: 将类的接口转换为另一个接口桥接模式: 将抽象部分与它的实现...
2019-01-07 23:31:36 170
原创 Qt 窗口设置Qt::FramelessWindowHint属性,子类窗口设置qss出现问题
父窗口属性中,有Qt::FramelessWindowHint属性,子窗口在使用qss时,会出现子窗口的组件,如果没有设置背景,不会使用子窗口的背景颜色,而是使用了父窗口的背景颜色。如果子窗口的组件,qss中使用background:transparent;会出现背景不是透明,而是黑色。现在有两种办法解决,一个是给组件通过setAttribute(Qt::WA_TranslucentBac...
2019-01-06 22:34:57 7746 1
原创 C++ 中 const的使用
1、const可以定义常量,编码中尽量使用const代替define定义的常量2、使用const保护参数void fun(const int a){ a=10;//compile error}3、const引用作为参数,可以提高效率,不用每个参数都会进行拷贝操作。4、类成员函数后面加上const,该函数不会修改类中的数据成员...
2019-01-06 22:25:22 127
原创 C++11 之后的指针简单介绍
C++11 之后有3中智能指针,std::unique_ptr、std::shared_ptr和 std::weak_ptr。unique_ptr类似于普通指针,但是在unique_ptr超出作用域或者删除时,会自动释放内存或资源。unique_ptr只属于它指向的对象。unique_ptr的一个有点时,发生异常的时候,必须释放存储空间。可以使用std::make_unique<>...
2019-01-06 22:18:21 224
原创 visual studio 编译C++程序,加快编译速度
网上很多有关于选择预编译选项出现, fatal error C1083: 无法打开预编译头文件:“***\***.pch”: No such file or directory,这样的错误,好多人会选择直接不使用预编译选项。如果工程很大的话,编译速度很慢,有的会花费二十分钟去编译。如何规避这个问题呢,就是还需要使用预编译选项,解决上面出现的错误,先查看Source Files文件过滤器...
2019-01-06 21:10:01 4281 1
Qt 使用paint的一些简单使用和系统托盘的简单应用,实现只能通过系统托盘关闭,才能关闭程序
2018-05-22
visual studio 高级编程2015.pdf
2017-09-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人