
c++
qingcunsuiyue
集美貌、智慧、才华于一身的女子。
展开
-
银行家算法
#includeusing namespace std;#include#include#define M 3 //资源数#define N 5 //进程数struct DijkstraNode{ int num;//进程名 int max[M];//进程对某类资源的最大需求 int allocation[M];//已分配的 int need[M];//尚需求的 bool原创 2017-01-03 19:27:37 · 1840 阅读 · 0 评论 -
【多态】Python实现多态
什么是多态呢? 简单粗爆的理解就是:接口可以用不同的方式实现,可以写出通用的代码 子类对父类中的函数进行了重写,当父类的指针(或引用)指向子类的对象时,调用的是子类重写后的函数那么这就引入了重写和重载的概念? 重载:函数名相同,参数列表不同,重载只在类的内部实现。在调用时,会根据传参不同调用不同的函数。 重写:也要覆盖,子类重新定义父类中有相同名称和参数的虚函数,主要在继承中体现。C++实现多态需要必备3大特性? (1)要有继承 class B: publicA {...原创 2020-05-18 20:31:39 · 359 阅读 · 0 评论 -
百度面试题------将一个电分十进制的IP地址转换为一个32位的整数,要求一一对应
解题思路:IP地址通常是用点分十进制表示,但它其实是一个32位的二进制。10.2.3.5000001010.00000010.00000011.00000101每一个部分都是一个字节,8个bit位。int IpToInt(string s){ int ret=0; int num=0; for(int i=0;i<s.size();i++) { if(s[i]!='.原创 2017-09-22 12:24:18 · 2274 阅读 · 0 评论 -
58面试题-----用两个栈实现一个队列
题目:class Solution{public: void push(int node) { stack1.push(node); } int pop() { int ret=0; if(stack1.size()==1&&stack2.size()==0) stack1.pop();原创 2017-09-22 11:00:24 · 271 阅读 · 0 评论 -
用c语言实现继承和多态
继承和多态是C++的特性,它C语言没有这个特性。C++的三大特性:继承,多态,封装。继承:分为公有(public)继承,私有(private)继承,保护(protected)继承。用struct来模拟实现,因为struct在C和C++中都能可以使用,在C中称为结构体在C++中称为类,但他们的原理是一样的,又因为struct的限定符默认是公有的,在C中没有限定符这个概念,所以用C语言只能原创 2017-07-10 00:01:13 · 1074 阅读 · 0 评论 -
用C++实现单例模式
什么是单例模式:一个类只有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。#includeusing namespace std;#include//单例模式--》只能实现一个实例//多线程下不安全--》new Singleton不是原子操作//class Singleton//{//public:// static Singleton* GetSinglet原创 2017-07-07 18:32:49 · 248 阅读 · 0 评论 -
线程池的实现
为什么要使用线程池:因为线程的创建和销毁占了大量的CPU等系统资源,使用线程池可以解决这种情况,提高服务器的性能。线程池的思想:(1)先在内存中开辟出一些数目固定的线程。(2)当请求到达时,从线程池中选择一个空闲的线程来服务,服务完成时,线程放入线程池。(3)当请求到答时,没有空闲的线程,将请求放到任务队列中,等有空闲的线程时在处理。原创 2017-07-29 14:47:35 · 242 阅读 · 0 评论 -
不能被继承的类
解题思路:1、C++中的子类构造函数会自动的调用父类的构造函数,子类析构函数会自动调用父类的析构函数。那么把构造和析构函数定义为私有的,就不能被继承了。2、缺陷:定义为私有函数时,要在类外创建类的对象,只能实现成要么在栈上创建要么在堆上创建。//因为构造函数和析构函数都为私有的,所以他不能被继承//缺陷:它只能在堆上生成,不能在栈上生成。class A{public: sta原创 2017-07-06 00:22:52 · 785 阅读 · 0 评论 -
如何定义一个只能在栈上生成对象的类
这个题目考察了对C++语法的理解和应用。1.只能在栈上声明对象,说明这个类不能在堆上声明,也就是说不能用new来实现。2.把类的构造函数声明为protect,就可以达到在类外不用在堆上new,但这个也同时在类外不能在栈上声明对象,必须在类内实现一个接口,来达到在栈上声明对象。3.在类外调用成员函数,必须要用类的对象来调用,但是在类外不能声明类的对象,这个要怎么办呢??? 在类的原创 2017-07-05 17:53:46 · 387 阅读 · 0 评论 -
智能指针的原理及其模拟实现
为什么有智能指针: 因为C++中没有回收内存的机制,当我们new一块内存时,如果忘记了delete,会产生异常导致程序奔溃,为了解决这个问题,引入了智能指针来管理内存。智能指针的原理: 智能指针的原理就是RAII。RAII:资源的分配即初始化,定义一个类来封装资源的分配和释放,在构造函数来进行资源的分配和初始化,在析构函数来释放资源,资源的正常使用。 智能指针其实是一个栈对原创 2017-03-29 18:27:30 · 315 阅读 · 0 评论 -
剑指offer-----青蛙跳台阶问题(1)
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级,求该青蛙跳上一个n级台阶总共有多少种跳法。规律:当台阶为1级时,有一种跳法,当台阶为2级时,有两种跳法,当台阶为3级时,有三种跳法,当台阶为4级时,有种跳法五种跳法,可以总结为,f(1)=1,f(2)=2,f(3)=3=1+2,f(4)=5=2+3,f(5)=8=5+3,......f(n)=f(n-1)+f(n-2); 为什么会原创 2016-11-17 23:26:17 · 368 阅读 · 0 评论 -
模拟实现C++中的string类
一、用一般方法实现string类class String{ friend ostream& operator<<(ostream& os,String& str);public: String (const char* str="") //构造函数 :_capacity(size(str)+1) ,_sz(size(str))原创 2016-08-30 19:42:28 · 449 阅读 · 0 评论 -
万年历-----日期计数器
日期计数器---->就是可以实现日期的加减天数,日期加日期,日期减日期,两个日期之间大小的判断等等。#include#includeusing namespace std;class Date{public: Date(int year=1,int month=1,int day=1) :_year(year) ,_month(month) ,_day(day) {}原创 2016-08-18 16:45:42 · 1492 阅读 · 0 评论