- 博客(53)
- 收藏
- 关注
原创 抽象类的注意点
把只能用于被继承而不能直接创建对象的类设置为抽象类抽象类表示法:virtual void fun() = 0;1.抽象类只能作为其他类的基类,他不能直接被实例化,而且对抽象类不能使用new操作符。抽象类如果含有变量或值,则他们一定是null类型,要么包含了对非抽象类的实例的引用。2.抽象类允许包含抽象成员,但这不是必须的(可以允许一个抽象类中没有没有任何抽象成员);抽象类中可以有非抽象...
2018-09-09 15:58:25
294
转载 内联函数的作用
内联函数有什么用?当编译器内联展开一个函数调用时,该函数的代码会被插入到调用代码流中(概念上类似于展开#define宏)。能够改善性能,因为优化器能够顺序集成被调用代码,即将被调用代码直接优化进调用代码中。函数设定为内联,这只是个请求,而编译器可以忽略它。编译器可能会展开内联函数调用,也可能不展开。(这看上去非常模糊,但不要为之沮丧。这种灵活性其实有很大优点:这可以让编译器能够区别对待很长...
2018-08-20 15:20:47
4005
转载 函数重载时需要遵循的规则
( 1 ) 除了类属关系运算符 " . " 、成员指针运算符 " .* " 、作用域运算符 " :: " 、sizeof运算符和三目运算符 " ?: " 以外,C ++ 中的所有运算符都可以重载。 ( 2 ) 重载运算符限制在C ++ 语言中已有的运算符范围内的允许重载的运算符之中,不能创建新的运算符。 ( 3 ) 运算符重载实质上是函数重载,因此编译程序对运算符重载的选择,遵循函数重载的选择原则...
2018-08-18 11:24:52
2632
原创 数组中重复的数字
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。class Solution {public: // Parameters: // number...
2018-08-17 19:08:07
183
原创 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。
class Solution {public: string LeftRotateString(string str, int n) { string s = ""; s = str.substr(0,n); str.erase(0,n); str = str + s; return str; }...
2018-08-17 18:32:31
3083
原创 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { ...
2018-08-16 11:41:10
428
原创 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型
class Solution{public: void push(int node) { stack1.push(node); } int pop() { int tmp; if(stack2.empty()) { while(!stack1.empty(...
2018-08-16 11:00:33
647
原创 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
class Solution {public: vector<int> FindNumbersWithSum(vector<int> array,int sum) { //vector<int> temp; vector<int> result; int len = array.size()...
2018-08-14 20:39:34
1361
2
原创 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }* };*/class Solution {public: vector<in...
2018-08-14 19:56:33
847
原创 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。
给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, ...
2018-08-12 19:23:35
808
原创 如何得到一个数据流中的中位数?
如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。class Solution {public: vector<int> result; void Insert(...
2018-08-12 19:16:42
833
原创 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
class Solution {public: vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { vector<int> result; int i = 0,j = 0; int temp; int len ...
2018-08-09 10:13:39
541
原创 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在
class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbers) { int len = numbers.size(); int i = 0,j = 0; int count = 0; for(i = 0;i < len;i...
2018-08-09 09:37:25
1693
转载 C++强制类型转换static_cast、dynamic_cast、const_cast、reinterpret_cast
static_cast相当于传统的C语言里的强制转换,该运算符把expression转换为new_type类型,用来强迫隐式转换。 用法: ①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。 进行上行转换(把派生类的指针或引用转换成基类表示)是安全的; 进行下行...
2018-08-07 19:12:00
244
原创 第一个只出现一次的字符
class Solution {public: int FirstNotRepeatingChar(string str) { int i = 0; int len = str.size(); if(len == 0) { return -1; } char arra...
2018-08-04 18:50:35
110
原创 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数
class Solution {public: int StrToInt(string str) { int result = 0; int len = str.size(); if(len <= 0) return 0; int i = 0; int flag = 0; ...
2018-08-03 15:51:46
1648
原创 整数中1出现的次数(从1到n中1出现的次数)
class Solution {public: int NumberOf1Between1AndN_Solution(int n) { int count = 0;//1的个数 int i = 0; int num; for(i = 1;i <= n;i++) { nu...
2018-08-03 14:21:57
172
转载 C++编程规范
一般性问题:1. 不要在注释中重复写代码语义,这样很容易产生不一致. 应该编写的是解释方法和原理的说明性注释.2. 不要对每个项目每个文件进行强制的排版格式规定, 在同一个文件中风格一致即可.3. 匈牙利记法是混用了类型不安全语言中的设施, 在面向对象语言中可以存在, 但是有害无益, 在泛型编程中则根本不可行, 在规范中禁用该记法则是合理的.4. 用提倡更短小更简单的函数来代替规定...
2018-08-03 10:34:10
165
转载 线程安全与否
线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据============================================================...
2018-08-01 11:18:02
170
转载 C++中的explicit
C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。 C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。 1 是个构造器 ,2 是个默认且隐含的类型转换操作符。 所以, 有时候在我们写下如 AAA = XXX...
2018-08-01 10:41:40
120
原创 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
class Solution {public: int Add(int num1, int num2) { int i = 0; if(num2 > 0) { for(i = 0;i < num2;i++) { num1++; ...
2018-07-31 14:00:54
438
原创 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。
class Solution {public: void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) { int len = data.size(); int i = 0,j = 0,k = 0; int count = 0; if(len ...
2018-07-31 11:53:35
923
原创 统计一个数字在排序数组中出现的次数。
class Solution {public: int GetNumberOfK(vector<int> data ,int k) { int count = 0; int len = data.size(); int i = 0; for(i = 0;i < len;i++) { ...
2018-07-31 11:28:49
188
转载 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
方法1:class Solution {public: int Sum_Solution(int n) { int res = 0; n > 0 && (res = (n + Sum_Solution(n - 1))); return res; }};方法2:class Solu...
2018-07-30 14:46:04
562
原创 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
class Solution {public: double Power(double base, int exponent) { double sum = 1; int i = 0; if(exponent >= 0) { for(i = 0;i < exponent;i++) ...
2018-07-30 10:12:03
305
原创 能够从输入流中提取指定长度的字节序列的函数是( )。
(A)get(B)getline(C)read(D)cin答案选择Cget函数中有3中用法:1)不带参数的cin.get()用来从输用来从输入流中读取一个字符(包括空白符),返回值就是读取的字符2)带一个参数的cin.get(ch)从输入流中读取一个字符,并赋值给ch,读取成功则返回true,失败则为false。3)带3个参数的cin.get(字符数...
2018-07-30 09:46:02
1915
原创 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组
class Solution {public: int minNumberInRotateArray(vector<int> rotateArray) { int min = rotateArray[0]; int i = 0; if(rotateArray.size() == 0) { ...
2018-07-29 20:29:57
591
原创 关键字static
static修饰静态变量。static的作用是: (1)修饰局部变量:延长局部变量的生命周期,变量只定变量只定义一次,不可以被其他函数使用 (2)修饰全局变量:变量不能被外部文件使用,只能在本文件中使用,即不可以在其它的.c文件中使用 (3)修饰静态函数,只能访问静态变量。具有“隐藏”功能。...
2018-07-29 10:18:51
95
原创 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
class Solution {public: bool Find(int target, vector<vector<int> > array) { if(array.size() == 0) { return false; } else { ...
2018-07-26 10:35:10
219
转载 运算符优先级
() [] . -> (括号,成员排第一) ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) sizeof (单目运算排第二) * / % (乘除余三) + - (加减四) >> << (移位五) &g...
2018-07-25 18:37:10
268
原创 小端模式的使用
char array[12] = {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}; short *pshort = (short *)array; int *pint = (int *)array; int64 *pint64 = (int64 *)array; printf("0x%x,0x%x,0x%llx,0x%ll...
2018-07-25 09:21:29
876
1
原创 中断
中断是指在在CPU运行过程中出现了某些意外,CPU立即中断正在处理的事情,去处理中断服务程序,处理完后,再返回处理原来的事情,就叫中断。 中断也可以理解为插队。他处理的是紧急的事情或者实时性比较高的事情。 引起CPU中断的根源是中断源。 中断的具有不确定性,它不知道什么时候什么地点会发生什么中断。 中断的特点:同步工作...
2018-07-24 20:35:34
1416
原创 预处理
预处理包含:(1)宏定义指令 (2)条件编译指令 (3)头文件包含指令 (4)编译程序可以识别的特殊符号条件编译指令#ifdef,#ifndef这两个bu'y不一定要位于一开始。预编译是对原文件的部分内容(宏定义,特殊符号,条件指令)的替换。预处理命...
2018-07-24 13:34:46
118
原创 单片机8位共阴极数码管0~99自增
#include <reg51.h>#define DataPort P1 //宏定义,如果换接口,只需要修改这里sbit Seg_Latch = P2^2; //锁存器 段锁存sbit Bit_Latch = P2^3; //位锁存unsigned char code Seg_Code[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d...
2018-07-23 20:28:52
6563
原创 单片机
单片机是在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机,简称计算机。 也可以换句话说是“麻雀虽小,五脏俱全。” 单片机是按照工业kong控制要求设计的。 dan'单片机内部资源三大指标: (1)FLASH(程序cun'存储空间ROM) (2)...
2018-07-21 19:28:09
645
原创 单片机———点亮LED灯
/************************************************************************************(1)循环从左向右亮一遍(1,2,3,4,5,6,7,8),再反向亮一遍(8,7,6,5,4,3,2,1);*(2)每隔一个亮一遍(1,3,5,7),再反向(8,6,4,2);*(3)每隔3个亮一遍(1,5),再反向(8,4...
2018-07-21 17:49:30
932
原创 一个整数的二进制表示中有多少个1
一般我自己第一反应的方法:#include <stdio.h>void Number(int a){ int k = 0; while(a) { if(a % 2 == 1) { k++; } ...
2018-07-20 13:38:41
577
转载 请设计一个类,该类在同一个进程中只能由一个实例,且该实例允许外部访问。
我在刷牛客网的时候,发现一道发现一道单例模式的题。在学C++的时候遇到过,不太记得了,运用的也少。但是发现面试题中yu'd遇到的还是挺多的。模式:在整个程序中只能出现一次类的实例示例一: ----- 称饿汉式 :开始就急着创建对象,所以称为俄汉式class A{ private static A a = new A(); private A()...
2018-07-20 09:12:33
1990
原创 AD中PCB使用步骤
(1)File -> new -> Project -> PCB Project (2) File -> new -> Schematic (3) 右击项目名 -> Add Existing to Project (添加元件库) (4) 在 .SchDoc 下开始画元件图 (5) 在右下角的System中选择Files,再选择Files...
2018-07-19 15:21:32
2798
转载 PCB布线规则
PCBA成品中最核心的部分便是线路板,而线路板最基础的便是线路,PCBA抄板加工及PCBA开发加工中对于线路板设计布线的了解也是必不可少的。 PCB设计布线应遵循的基本规则:一、控制走线方向输入和输出端的导线应尽量避免相邻平行。在 PCB 布线时,相邻层的走线方向成正交结构,避免将不同的信号线在相邻层走成同一方向,以减少不必要的层间窜扰。信号串扰对PCBA加工成品的功能影响较大。当 PCB...
2018-07-18 19:33:27
2898
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人