自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 打印从1到最大的n位数

题目:输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数999。 【例】 #include<iostream> #include<stdlib.h> #include<stdbool.h> using ...

2020-02-01 11:19:21 89 0

原创 数值的整数次方

题目:实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数pow,同时不考虑大数问题。 解题分析 1、基数为0,指数小于0的情况,会导致程序出错,要进行特殊处理; 2、当基数不为0,指数小于0的情况,即求整...

2020-01-05 18:34:22 51 0

原创 字符串的排列

题目:输入一个字符串,打印出该字符串中字符的所有排序。例如:输入字符串abc,则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bca、bac、cab、cba。 解题思路: (1)求所有可能出现在第一个位置的字符,即把第一个字符和后面所有的字符交换。 (2)把后面的所有字符分成两部分...

2019-12-10 10:49:23 52 0

原创 仿函数

函数对象function objects,又名仿函数,一种行为类似函数的对象,调用者可以向函数一样使用该对象,其实现起来也比较简单:用户只需要实现一种新类型,在类中重载operator()即可,参数根据用户所要进行的操作选择匹配。如下所示: class FunctionObjectType { ...

2019-11-24 17:01:41 50 0

原创 iterator

1、迭代器的概念 迭代器(iterator)是一种抽象的设计概念,是设计模式的一种,其定义如下:提供一种方法,使之能够依次寻访某个容器所包含的所有元素,而又无需暴露该容器底层的结构。 2、迭代器的本质 迭代器实际是一种行为类似指针的对象,因此指针的所有操作迭代器都支持,使用迭代器时向使用指针一样去...

2019-11-22 23:14:48 66 0

原创 multimap

1、multimap的概念 multimap和map的唯一差别就是map中的key必须是唯一的,而multimap中的key是可以重复的,其底层结构及方法接口与map完全相同。 2、multimap的基本操作 使用map时,必须包含头文件以及std标准命名空间。 (1)insert():插...

2019-11-20 22:24:39 46 0

原创 map

1、map简介 (1)map的特性 map的所有元素都会根据元素的键值自动排序。map的所有元素都是pair,同时拥有实值(value)和键值(key)。pair的第一元素被视为键值,第二元素被视为实值。map不允许两个元素拥有相同的键值,底层机制由红黑树实现。 (2)map的性质 当客户端对它进...

2019-11-20 22:05:19 22 0

原创 unordered_map

1、multimap的概念 multimap和map的唯一差别就是map中的key必须是唯一的,而multimap中的key是可以重复的,其底层结构及方法接口与map完全相同。 2、multimap的基本操作 使用map时,必须包含头文件以及std标准命名空间。 (1)insert():插...

2019-11-20 21:36:26 36 0

原创 STL中的multiset

1、基本概念 multiset与set唯一的不同就是:multiset中的元素可以重复,而set不可以重复。 2、multiset的操作 使用multiset时必须包含头文件以及std标准命名空间。 (1)insert():插入数据。 (2)erase():删除数据。 (3)find():查找数据...

2019-11-14 23:44:24 29 0

原创 STL中的set

1、set的基本概念 set与map相同的是:底层均采用红黑树,因此所有元素都会根据元素的键值自动排序,与map不同的是:map中存放真正的键值对<key, value>,而set中的value就是key,key就是value,虽然set提供给用户的接口只存放value,而实际底层...

2019-11-14 23:38:21 32 0

原创 STL中的priority_queue

1、priority_queue概述 (1)priority_queue是一个拥有权值观念的queue,它允许加入新元素、移除旧元素、审视元素值等功能。因为这是一个queue,所以只允许再底端加入元素,并从顶端取出元素。 (2)priority_queue带有权值观念,其内的元素并非依照被推入的次...

2019-10-24 15:45:23 62 0

原创 STL中的queue

1、queue概述 queue是一种先进先出的数据结构。queue允许新增元素、移除元素、从最底端加入元素、取得最顶端元素,但是没有迭代器,不允许遍历。将元素推入queue得操作称为push,将元素推出queue得操作称为pop。如下图所示: 2、queue的定义 deque是双向开口的...

2019-10-23 22:38:59 31 0

原创 STL中的stack

1、stack概述 stack是一种先进后出的数据结构。stack不允许有遍历行为,也不提供迭代器,只允许新增元素、移除元素、取得最顶端元素。将元素推入stack的操作称为push,将元素推出stack的操作称为pop,如下图所示。 2、stack的定义 deque是双向开口的数据结构,以deq...

2019-10-23 22:33:19 63 0

原创 STL中的heap

1、heap的概念 heap(堆)就是用数组实现的二叉树,所以它没有使用父指针或者子指针。堆根据“堆属性”来排序,“堆属性”决定了树中节点的位置。堆的常用方法:构建优先队列、支持堆排序、快速找出一个集合中的最小值(或者最大值)。 (1)heap属性 1)堆属性分为两种:最大堆和最小堆。在最大堆中,...

2019-10-23 21:46:41 70 0

原创 STL中的list

1、list概述 list的优点是每次插入或删除一个元素,就配置或释放一个元素空间,对于任何位置的元素插入或元素移除,list永远是常数时间。list迭代器是提供使用者使用list的一种接口。 2、list的底层结构 list的底层是一个带头结点的双向环状链表,因此在其任意位置进行数据插入和...

2019-10-19 20:49:33 32 0

原创 STL中的vector

1、vector概述 vector的数据安排以及操作方式与array非常相似。两者的唯一差别在于空间运用的灵活性。array是静态空间,一旦配置了就不能改变。当要扩大空间时,首先要配置新空间,然后将数据转移,还要释放旧空间。vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳...

2019-10-16 23:14:39 32 0

原创 C++深浅拷贝

1、浅拷贝和深拷贝 所谓浅拷贝就是由默认的拷贝构造函数所实现的对数据成员逐一赋值的方式。若类中含有指针类型的数据,这种方式只是简单地把指针指向赋值给新成员,但是并没有给新成员分配内存,因此这种方式必然会导致错误。为了解决浅拷贝出现地错误,必须显示地定义一个拷贝构造函数,使之不但能复制数据成员,而且...

2019-08-28 16:04:32 96 0

原创 C++static成员

1、概念 声明为static的类成员称为类的静态成员,用static修饰的成员变量称为静态成员变量,用static修饰的函数称为静态成员函数。 2、特性 (1)静态成员为所有类对象所共享,不属于某个具体的实例; (2)静态成员变量要在类外定义,定义时不加static关键字; (3)访问静...

2019-08-23 22:47:50 281 0

原创 C++友元

友元分为友元函数和友元类。 1、友元函数 友元函数可以直接访问类的私有成员,它是定义在类外的普通函数,不属于任何类,但是需要在类的内部声明,声明时需要加friend关键字。 【例】 #include<iostream> #include<stdlib.h> ...

2019-08-22 22:56:01 50 0

原创 C++对象的计算

先看如下代码: #include<iostream> #include<stdlib.h> using namespace std; class Person { public: void SetPersonInfo(const char* name, co...

2019-08-18 10:42:56 56 0

原创 C++内联函数

1、概念 以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内敛函数的地方展开代码。因为没有函数压栈的开销,所以内联函数可以提升程序运行的效率。 2、特性 (1)inline是一种以空间换时间的做法,省去调用函数开销。 (2) inline对于编译器而言只是一个建议,编译器会...

2019-08-14 11:36:02 82 0

原创 C++多态

1、多态的概念 (1)什么是多态? 多态指:一个事物有多种形态。多态分为两类:静态多态和动态多态。函数重载和运算符重载都属于静态多态,在程序编译时系统就能决定调用的是哪一个函数。动态多态是在程序运行过程中才确定操作的对象,它是通过虚函数实现的。 (2)构成多态的条件 1)基类中必须包含虚函数,并且...

2019-08-12 11:28:52 51 0

原创 MySQL中的重要概念

1、什么是数据库事务?事务有什么特点? (1)数据库事务:指作为单个逻辑工作单元执行的一系列操作,这些操作要么全做,要么全不做,是一个不可分割的工作单元。 (2)事务的特点: 1)原子性; 2)一致性; 3)隔离性; 4)持久性。 2、主键和外键的区别 (1)主键所在的列的值是唯一...

2019-07-18 09:44:01 85 0

原创 MySQL的用户管理

如果每个用户都使用root权限,访问所有的数据库,就存在安全隐患,需要对用户进行管理。例如:李三只能操作test数据库,王五只能操作test1数据库,如果赋予root权限,就可以访问所有的数据库,风险很大。 一、用户 1、用户信息 MySQL中的用户信息,都存储在系统数据库mysql的user表中...

2019-07-16 11:08:11 46 0

原创 MySQL中的视图

一、视图的概念 1、什么是视图? 视图是一条select语句执行后返回的结果集。在创建视图的时候,主要是编写SQL查询语句。 2、视图的特性 视图相当于一张虚表,是对若干张基本表的引用,是查询语句执行的结果,可以与基本表一样进行增删查改,但是不存储具体的数据,基本表数据发生了改变,视图也会...

2019-07-15 11:35:29 76 0

原创 MySQL的事务

1、事务的必要性 事务是一组不可被分割执行的SQL语句的集合,如果有必要,可以撤销。如银行转账,用户A给用户B转账主要分为两部分:第一,账户A的账户金额减去8000;第二步,账户B的账户金额加上8000。这两步要么全成功,要么全不成功,否则会导致数据不一致。这就需要用到事务来保证,如果是不同银行的...

2019-07-14 21:37:15 55 0

原创 MySQL中的索引

一、索引的概念 1、索引的作用 索引的作用在于不需要加内存、不用改程序、不用调sql,只需要创建索引,就能提高海量数据的检索速度,但是要以插入、删除和更新的速度为代价。 2、索引的基本概念: 创建索引会形成一棵二叉树,查询时可进行二分查找。创建索引会占用磁盘空间,处理信息时,除了改变表中的...

2019-07-12 23:27:12 77 0

原创 MySQL的数据类型

1、数据类型 2、数值类型 (1)tinyint类型 数值越界测试: 说明: 1)在MySQL中,整型可以指定有符号或者无符号,默认是有符号的。 2)可以通过UNSIGNED来说明某个字段是无符号的。 3)无符号案例: (2)bit类型 1)基本语法:bit[(M)] 2)释:位字段类型...

2019-07-06 23:50:40 56 0

原创 MySQL的函数

1、常用的日期函数 (1)函数名称与功能 (2)【例】 1)获得年月日 2)获得时分秒 3)获得时间戳 4)在日期的基础上加时间 5)在日期的基础上减去时间 6)计算两个日期相差多少天 (3)案例 案例一: 1)创建一张表,用于记录生日 2)...

2019-06-16 18:42:28 158 0

原创 MySQL的group by子句

1、group by子句 (1)作用:根据数据列的每个成员对查询结果进行分组(分类)统计,最终得到一个分组汇总表。 (2)语法:select 列名 | 列函数 from 表名 group by 列名; (3)案例: 1)创建staff表,表中包含id、name、dept、salary、ed...

2019-06-14 00:17:53 187 0

原创 MySQL的聚合函数

1、count (1)作用:count(列名)返回某一列,行的总数。 (2)语法:select count() | count(列名) from table_name where condition; (3)案例: 1)统计一个班级共有多少学生。 2)统计数学成绩大于等于90的学生的...

2019-06-11 21:52:55 120 0

原创 MySQL表的增删查改

1、增加——insert into (1)语法:insert into table_name[(column[,column…])] values(valu [,value…]); (2)案例: (3)使用添加语句需要注意的细节 1)插入的数据应与字段的数据类型相同,比如:将‘abc’...

2019-06-09 17:56:16 121 0

原创 MySQL的表约束

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,才能更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是Email,它是unsigned int类型的,而且要求每个Email号都是不同的,即unique属性。可用于表示的约束很多,这里主要介绍如下几个:n...

2019-06-09 16:55:39 1075 0

原创 旋转数组中的最小数字

题目:把一个数组最开始的若干个元素搬到数组的末尾,称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组{3, 4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 1、旋转数组的特点: 旋转之后的数组可以划分为两个排序的子数组,而且前面...

2019-05-25 00:12:04 76 0

原创 数组中唯一个出现一次的数字

题目:在一个数组中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。 解题思路: 如果一个数字出现三次,那么这个数表示的二进制的每一位的和都能被3整除。把不能整除的数加起来就是那个只出现一次的数字。 如:在数组{8,6,7,8,8,6,6}中,3个8的二进制的每一位...

2019-05-20 23:52:38 390 0

原创 找出数组中只出现一次的数字

题目:一个整形数组里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 1、解题思路 在这个数组里只有两个数出现一次,而其它数字都出现了两次。因为一个数字异或它本身等于0,所以可以消除出现两次的数字。剩下两个出现一次的数字...

2019-05-18 18:38:26 181 0

原创 数组中数值与下标相等的元素

题目:数组中数值和下标相等的元素。 假设一个单调递增的数组里的每一个元素都是整数并且是唯一的。请编程一个函数,找出数组中任意一个数值等于其下标的元素。例如,在数组{-3,-1,1,3,5}中,数字3和它的下标相等。 方案一:时间复杂度为O(n) 遍历整个数组的元素,并且逐一检验元素是不是与...

2019-05-12 18:19:24 184 0

原创 在0~n-1中缺失的数字

题目:0~n-1中缺失的数字 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。 方案一:时间复杂度为O(n) 先用公式n(n-1)/2求出数组0~n-1的和,记为s1; ...

2019-05-12 12:04:47 306 0

原创 数字在排序数组中出现的次数

题目:统计一个数字在排序数组中出现的次数。例如,输入排序数组{1,2,3,3,3,4,5,6}和数字6,由于3在数组中出现了3次,因此输出3 方案一:时间复杂度为O(n) 先用二分查找找到3; 在3的两边顺序扫描,分别找出第一个3和最后一个3的位置; 最后用最后一个3的位置减去第一个3...

2019-05-11 19:09:06 65 0

原创 MySQL的表操作

创建表 (1)语法: CREATE TABLE table_name( Field1 datatype, Field2 datatype, Field3 datatype )character set 字符集 collate 校验规则 engine存储引擎; (2)说明 1)f...

2019-05-04 23:53:16 582 2

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