自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

转载 MFC拖拽

 在日常的程序中,为了操作的方便,经常需要使用鼠标拖拽的方式把文件管理器中的文件拖拽到我们自己写的程序中,以下就简单介绍以下实现该操作的方法。       其实文件管理器的拖拽方式实现起来很简单,主要通过几个函数来实现,消息WM_DROPFILES的响应函数OnDropFiles,还有三个API函数:DragQueryFile、DragQueryPoint和DragFinish。 在启动拖拽动...

2018-07-19 22:44:12 1867

原创 c++类模板用法讲解

在编写类模板的程序时,把类模板的成员函数的声明和实现分别写在了头文件和源文件中,导致了出现编译出错的现象,现弄清楚了原因,特写此篇,供大家参考学习。c++中每一个对象所占用的空间大小,是在编译的时候就确定的,在模板类没有真正的被使用之前,编译器是无法知道模板类中使用模板类型的对象所占用的空间大小的。只有模板被真正使用的时候,编译器才知道,模板套用的是什么类型,应该分配多少空间。这也是模板类称之为模...

2018-06-19 23:56:15 1848 2

原创 二叉树的概念讲解

本篇就大概介绍下二叉树的基本知识。1.二叉树的定义二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的分别称为根结点的左子树和右子树的二叉树组成。2.二叉树的特点①。每个结点最多有两棵子树。②。左子树和右子树是有顺序的。③。即使树中某结点只有一颗子树,也要区分它是左子树还是右子树。3.特殊的二叉树斜树:每一层都只有一个结点,节点的个数与二...

2018-06-12 23:25:50 1764

原创 二叉树的遍历c++代码实现

二叉树的遍历是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次。二叉树的遍历方式常用的有四种:前序遍历、中序遍历、后序遍历和层序遍历。二叉树结点的定义代码如下://Definition for binary treestruct TreeNode { int val; TreeNode *left; TreeNode *right...

2018-06-12 22:55:25 12840 3

原创 C++中string类型求长度用法以及c_str用法总结

1.C++中求string类型的长度有三种方式。在c++中,string代表一个类,有它自己的构造函数和成员函数。有两个成员函数都可以求string类型的长度。①  length()成员函数。②  size()成员函数。③  可以借助strlen函数,但是前提是需要将string类型的字符串转换为char*类型。strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'...

2018-06-07 21:14:34 38534

原创 设计模式-----单例(Singleton)模式学习

概念:单例模式,就是保证一个类仅有一个实例,并提供一个访问它的全局访问点。保证一个类仅有一个实例最好的方法就是:让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。对于所有类而言,都有构造方法,不编码则系统默认生成空的构造方法,若有显示定义的构造方法,默认的构造方法就会失效。如果想要让类智能实例化一次,那么可以把类的构造方法写成是private,...

2018-05-30 23:49:16 300

原创 定义一个dll库的头文件,可被c++引用,也可以被c引用。

定义一个dll库的头文件,可被c++引用,也可以被c引用。(使用_declspec(dllexport),_declspec(dllimport),定义windows下的库)。

2018-05-29 23:53:42 835

原创 笔试题2:实现把字符串中的每个空格进行替换

题目:实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy”,则输出"We%20are%20happy"。做字符串中空格的替换就要统计出字符串中空格出现的次数,因此遍历字符串,统计字符串的长度以及空格出现的次数。然后计算下替换之后新字符串的长度。在给字符数组预分配内存大小时,一定要分配的大小比替换之后新字符串的长度要长。然后在原字符串基础上去修改字符串,为减少时间...

2018-05-28 23:54:04 450

原创 MySQL数据库之-----索引操作

数据库对象索引与书的目录类似,主要是为了提高从表中检索数据的速度。由于数据存储在数据库表中,所以索引是创建在数据库表对象上的,由表中的一个字段或多个字段生成的键组成,这些键存储在数据结构中,通过MySQL可以快速有效地查找与键值相关联的字段。根据索引的存储类型,可以将索引分为B型树索引和哈希索引。InnoDB和MyISAM存储引擎支持BTREE类型索引,MEMORY存储引擎支持HASH类型索引。M...

2018-05-27 23:50:44 527

原创 MYSQL数据库之----表的操作详解

此篇主要介绍数据库中表的操作。数据库是表的容器,表,必须输入某个数据库,因此在创建表之前要指明数据库。1.表的创建列定义: 列名   列的数据类型   [列的属性(约束)]创建表的SQL命令:create table 表名(列结构) [表选项];查看表的定义,可以用DESCRIBE命令。也可以简写为DESC命令。查看表的详细定义,可以使用 SHOW CREATE TABLE语句。2.删除表的语句S...

2018-05-26 23:03:45 434

原创 MYSQL数据库之存储引擎

与其他数据库软件不同,MYSQL数据库软件提供了一个名为存储引擎的概念。存储引擎是MYSQL数据库管理系统的一个重要特征,在具体开发时,为提高MYSQL数据库管理系统的使用效率和灵活性,可以根据实际需要来选择存储引擎。存储引擎指定了表的类型,即如何存储和索引数据、是否支持事务等,同时存储引擎也决定了表在计算机中的存储方式。1、用户在选择存储引擎之前,首先需要确定数据库管理系统支持哪些存储引擎。可通...

2018-05-24 22:44:38 510

原创 数据库之------管理用户

MYSQL 用户账号和信息存储在名为mysql的MYSQL数据库中,一般不需要直接访问Mysql数据库和表,但在需要获得所有用户账号列表时,需要直接访问。可以看到在MYSQL数据库中存在一个名为mysql的数据库。在mysql数据库中有一个名为user的表,它包含所有用户账号。然后访问数据库操作,user表有一个名为user的列,它存储用户登录名。可以看到有三个用户登录名。创建用户账号:命令:cr...

2018-05-23 12:22:40 944

原创 数据库学习一:创建数据库 、创建表、向表中插入数据与检索数据

1.显示数据库信息:通过show database命令。2.为了获得一个数据库内的表的列表,使用show tables;3.创建数据库 ,使用create database 数据库名;再使用show命令可以看出系统中多了一个自己创建的数据库名。4.创建表。数据库是表的容器,表,必须输入某个数据库。因而在创建表之前要指定数据库。1.可以通过语法指明表所属的数据库。库.表语法。如果任何的标识符出现了特...

2018-05-21 00:00:37 11342

原创 MYSQL数据库简介

数据库系统(Database system)= 数据库管理系统(DBMS,Database Management System)+数据库(Database)数据库管理系统(DBMS)可分为两类:一类为基于共享文件系统的DBMS,另一类为基于客户机-服务器的DBMS。前者包括Microsoft Access 和FileMaker等,用于桌面用途,通常不用于高端或更关键的应用。后者包括MYSQL、Or...

2018-05-20 23:47:13 7526

原创 c++之动态内存分配

1.先拿指针为例,搞明白指针赋值的含义。给指针赋值就相当于是改变指针的地址,就是改变指针所指向的内存。#include <iostream>using namespace std;int main(){ int b1 = 0, b2 = 4; int *a1 = &b1; int *a2 = &b2; cout << "赋值前a1和a2的地址...

2018-05-08 22:49:19 990

原创 求字符串的全排列的递归实现(对字符串中有相同字符也适用)

题目:输入一个字符串,打印出该字符串中字符的所有排列。接着上一篇,但此代码对字符串中有相同字符也同样能正确输出结果。例如:输入字符串abbc,则打印出由字符a、b、c所能排列出来的所有字符串abbc、abcb、acbb、babc、bacb、bbac、bbca、bcba、bcab、cbba、cbab、cabb。相比于字符串中所有字符都不相同的情况,这时只需要增加一个函数,在对字符串中两个字符交换之前...

2018-05-06 12:08:22 626

原创 求字符串的所有组合数(分冶法+递归)c++代码实现

题目:输入一个字符串,求字符的所有组合。例如输入字符串abc,则它的组合有a、b、c、ab、ac、bc、abc。当交换字符串中的两个字符时,虽然能得到两个不同的排列,但却是同一组合。下面假设字符串中所有字符都不相同。如果输入n个字符,则这n个字符能构成长度为1的组合、长度为2的组合、。。长度为n的组合。在求n个字符的长为m(1<=m<=n)的组合的时候,采用分冶法的思想,将大问题分解成...

2018-05-06 11:55:25 1952

原创 字符串的全排列c++代码实现

面试题28:字符串的排列题目:输入一个字符串,打印出该字符串中字符的所有排列。(假设字符串中所有字符都不相同)例如:输入字符串abc,则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。将大问题分解为小问题,本题思路是:把字符串看成有两部分组成:第一部分是它的第一个字符,第二部分是后面的所有字符。求整个字符串的排列,可以分成两步:首先求所有可能出现在第一...

2018-05-04 23:22:20 6885 2

原创 std:;remove_if用法讲解

remove_if(begin,end,op); remove_if的参数是迭代器,前两个参数表示迭代的起始位置和这个起始位置所对应的停止位置。最后一个参数:传入一个回调函数,如果回调函数返回为真,则将当前所指向的参数移到尾部。返回值是被移动区域的首个元素。remove_if在头文件algorithm中,故要使用此函数,需添加#include <algorithm>由于remove_...

2018-05-03 22:13:43 41412 4

原创 区分接口继承和实现继承

公有继承public的概念,可以分为两部分:函数接口继承和函数实现继承。在public继承下,派生类总会继承基类的接口。也就是成员函数的接口总是会被继承。pure virtual纯虚函数只具体指定接口继承。impure virtual(非纯)函数具体指定接口继承及缺省实现继承。non-virtual(普通)函数具体指定接口继承及强制性实现继承。例子1:一考虑一个展现绘图程序中各种几何形状的clas...

2018-04-27 12:19:07 2308

原创 c++中虚函数、纯虚函数和抽象类、多态性的概念

1、纯虚函数(pure virtual)纯虚函数的定义形式:virtual { } = 0;纯虚函数就是基类只声明函数体,没有实现过程。时对子类的约束,是接口继承。2、虚函数(Impure virtual)虚函数的定义形式:virtual {method body};c++的虚函数是基类提供虚函数的实现,为子类提供默认的函数实现。子类可以重写基类的虚函数实现子类的特殊化。虚函数具体指定接口继承和缺...

2018-04-27 12:08:44 769

原创 const用法讲解

const 修饰符与类型指针的用法合集:以char*为例。1、char* const ptr  ----const修饰符在*右边,修饰的是ptr,表明指针是个常量,这就是常指针,不能修改。                                       但是可以修改ptr指向的字符串。2、const char* ptr----此时const修饰词在*左边,表明ptr所指向的字符串是常量...

2018-04-26 21:01:44 265

原创 不在构造和析构过程中调用虚函数

1.不能在构造过程中调用虚函数。比如:在基类中有一个虚函数。class Transaction{public: Transaction(); virtual void logTransaction() const = 0; //虚的成员函数。};Transaction::Transaction() //基类构造函数实现{ logTransaction();}下面有两个派生类继承...

2018-04-26 20:21:39 367

原创 如何设计类,可以使得文件间的编译依存关系降至最低

方法一:使用pimpl idiom(pointer to implementation)的类,常被称为 Handle classes.将类分割为两个类,一个只提供接口,另一个负责实现该接口。分离的关键在于以“声明的依存性”替换“定义的依存性”。以Person类为例,假设负责实现的那个所谓implementation class取名为PersonImpl, Person将定义如下:#include&...

2018-04-26 20:17:22 420

原创 面试题8:求旋转数组的最小数字的c++代码实现

题目:把一个数组最开始的若干个元素搬到数组的末尾,称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。c++代码实现:int Min(int* numbers, int length){ if(numbers == NULL || length <=0) throw new ...

2018-03-30 15:51:00 281

原创 面试题7:用两个栈实现队列的c++代码实现

题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead。分别完成在队列尾部插入结点和在队列头部删除结点的功能。队列的声明如下:template<typename T>class CQueue{public: CQueue(void); ~CQueue(void); void appendTail(const T& ...

2018-03-30 15:39:27 387

原创 面试题6:重建二叉树,输入某二叉树的前序遍历和中序遍历的结果,重建出该二叉树。

假设输入的前序遍历和中序遍历的结果中都不含重复数字。例如:输入前序遍历序列{1,2,4,7,3,5,6,8},和中序遍历序列{4,7,2,1,5,3,8,6}要求重建出该二叉树,并输出其头结点。二叉树结点的定义如下:struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m...

2018-03-30 15:31:43 488

原创 面试题5:从尾到头打印链表的c++代码实现

题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。链表结点的定义如下:struct ListNode{ int m_nKey; ListNode m_pNext;};思路分析:解决这个问题要遍历链表。链表的顺序是从头到尾的顺序,输出的顺序是从尾到头,是典型的后进先出,可以用栈来实现这种顺序。c++代码实现:void PrintListReversingly_I...

2018-03-30 15:24:45 356

原创 c++中atoi、substr、c_str用法详解

最近写程序中用到这几个函数,下面将这几个函数的用法总结如下:1.atoi函数。功能:将字符串转换成长整型数。用法:int atoi(const char *nptr)示例代码如下:#include <stdio.h>#include <stdlib.h>//atoi函数是把字符串转换成长整形数。用法是: int atoi(const char *nptr)int m...

2018-03-26 22:04:09 2190

原创 字符串系列之strlen函数

常用字符串处理函数有以下几种:strlen   strncpy   strcpy   strncat    strcat   strncmp   strcmp   strstr。这里首先介绍strlen函数。1.strlen(const cr *s)返回的是字符串的长度。获得的是有效字符的长度,不包括末尾的结束符'\0'。strlen函数的原型是:unsigned int strlen(const...

2018-03-09 23:16:17 1371

原创 c标准库打开文件的格式

打开文件格式说明打开方式说明r以只读方式打开文件,该文件必须存在。r+以读/写方式打开文件,该文件必须存在。rb+以读/写方式打开一个二进制文件,只允许读/写数据。rt+以读/写方式打开一个文本文件,允许读和写。w打开只写文件,若文件存在则长度清为0,

2018-01-26 21:19:51 536

原创 <<输出运算符的考察点

1、输出由字符数组保存的字符串。        char *str = "abcde";cout 输出结果为:2、输出由字符指针保存的字符串。       char *p = "abcde";cout 输出结果为:

2018-01-26 21:11:08 274

原创 派生类的构造函数和析构函数的调用

派生类的构造函数调用:先执行基类的构造函数,并不是以构造函数的初始化列表为准,而是以声明构造函数时基类的顺序为准。再执行成员对象的构造函数,最后执行派生类的构造函数。例子:class Derived :public Base2, public Base1, public Base3  //声明基类{public:Derived(int i, int j, int k, in

2018-01-07 22:24:40 464

原创 c++中动态绑定和继承

(1)动态绑定也叫多态性,要掌握从派生类到基类的转换,使用指针或引用来实现。引用或指针既可以指向基类对象,也可以指向派生类对象。只有通过引用或指针调用虚函数才会发生动态绑定。(2)c++中有三种继承方式:公有。私有和受保护继承。最常用的是公有继承,基类是什么类型,公有继承后还是什么类型。公有继承叫做接口继承,私有和受保护的继承是实现继承。class的默认继承访问级别是私有继承,

2018-01-07 22:09:33 668

原创 c++中类的内存分布

#include using namespace std;class A{public:long a;};class B : public A {public:long b;};void seta(A* data, int idx) { data[idx].a = 2; }int main(int argc, char *argv[]

2018-01-07 21:48:51 386

原创 C++中内存分配和释放的函数

c语言的标准内存分配函数有:malloc,calloc,realloc,free等。c++的内存分配和释放函数为new和delete。下面对alloca、malloc、calloc、realloc等函数进行详细说明。alloca是向栈申请内存,无需进行释放。malloc分配的内存是位于堆中的,且没有初始化内存中的内容,可以调用memset函数来初始化这部分的内存空间。callo

2017-12-27 21:33:35 2750

原创 函数的重载和继承

一、函数重载构成的条件:函数的参数类型、参数个数不同才能构成函数的重载。二、类的三种访问方式:     public------在子类和外部都可以访问。     protected----在子类中可以访问,在外部不能访问。     private-------在子类和外部都不能被访问。     三、继承    继承-----即利用已有的数据类型来定义新的数据类型。称已存

2017-10-02 22:16:33 479

原创 c++中构造函数及析构函数特性

一、在c++中,关于构造函数有以下几点说明:1、构造函数最重要的作用是创建对象本身。2、c++规定,每个类必须有一个构造函数,没有构造函数,则无法创建对象。3、c++规定,如果一个类没有提供任何的构造函数,那么c++编译器会提供一个默认的构造函数,且这个默认的构造函数是不带参数的构造函数,它只负责对象的创建,不能进行对象的初始化。4、只要一个类定义了一个构造函数,不管这个构造函数是

2017-10-02 18:10:27 1846 2

原创 用c++编写程序。在小于99999的正整数中找符合下列条件的数,它既是完全平方数,又有两位数字相同。

一、题目解析要找出的数显然需要满足三个条件:1.数的范围是从1-99999.的整数。2.数满足是完全平方数。3.数中有两位数字相同。二、编程思路:简化条件的限制,直接对一个数的平方做循环,并让平方数满足该范围。判断两位数字相同可以采用排序算法加去重来实现。具体实现代码如下: #include #include #include #include using namesp

2017-09-18 20:04:56 3620

原创 Github使用简介

对于没接触过 github 的小白们来说,本文就简单介绍一下如何使用其上的开源项目以及如何在团队开发中使用Git来托管代码。1、首先注册一个 github 账号,这个对大家来说应该不难,就按照提示一步一步慢慢来吧。然后根据提示新建你的第一个开源项目,具体步骤,百度一下即可。点击那个Clone or download按钮即可进行下载了,这样你就可以成功的下载并使用开源项目了。3、

2017-03-30 19:37:40 1085 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除