cpp
文章平均质量分 51
呆萌大黄蜂爱擎天柱
学习软件编程
展开
-
默认成员函数+运算符重载
1.面向对象程序设计 概念:(Object Oriented Programming,缩写:OOP)是一种程序设计范型,同时也是一种程序开发的方法。 对象指的是类的实例,将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。 2.面向对象的三大特性: 封装、继承、多态 3 4.三种访问限定符 1. public成员可从类外部直接访问,private/p原创 2017-07-10 17:51:03 · 301 阅读 · 0 评论 -
剑指offer:正则表达式匹配
请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配如果模式中的字符是'.',那么就可以匹配字符串的任意一个字符,如果模式的字符不是'.',而是字...原创 2018-06-07 20:36:55 · 171 阅读 · 0 评论 -
求朋友圈的个数---并查集
问题:1、已知,有n个人和m对好友关系(存于一个集合r中)2、如果两个人是直接的或者间接的好友,(那么他们的朋友圈可以合并)则以下为例:int a[][2] = { { 1, 2 }, { 2, 3 }, { 4, 5 } };1)有5个人开辟6个整型数组,并初始化为-12)合并同一个朋友圈的人{1,2}的领导人是1,{2,3}的领导人是2,要将同一个朋友圈的人都合并到领导人下3.遍历数组,则遍历...原创 2018-05-04 14:57:43 · 982 阅读 · 0 评论 -
链表的相关面试题
1.判断单链表是否带环?若带环,求环的长度?求环的入口点?1)链表是否带环,我们需要用快(走两步)慢(走一步)指针,如果慢的和快的相等则链表带环bool ListCycl(Node* pHead){ if (pHead == NULL) { return fase; } Node* fast = pHead; Node* slow = pHead; while (fast) {...原创 2018-05-17 11:16:15 · 155 阅读 · 0 评论 -
判断出栈的合法性
元素出栈,入栈的合法性。如:入栈序列(12345)出栈为(54321)则合法。出栈为(45231)不合法#include<iostream>#include<stack>#include<assert.h>using namespace std;//1.定义一个栈。 //2.当栈为空时或栈顶元素不等于Out[]中的元素时,将In中元素入栈 //3....原创 2018-04-17 20:25:31 · 1509 阅读 · 0 评论 -
智能指针
要说智能指针我们应该先了解一下RAII RAII(Resource Acquisition Is Initialization),也成为“资源获取就是初始化”,是C++语言的一种管理资源、避免泄漏的惯用法。C++标准保证任何情况下,已构造的对象最终会销毁,即它的析构函数最终会被调用。简单的说,RAII 的做法是使用一个对象,在其构造时获取资源,在对象生命期控制对资源的访问使之始终保持有效,最后在对原创 2017-09-24 15:25:03 · 232 阅读 · 0 评论 -
vector和list的使用
vector和list的区别 1.在存储中 vector是连续存储的;list中的对象不一定是连续存储的。 2.list如果要随机访问某个元素需要遍历list,没有效率。vector重载了[ ]可以直接访问。 3.在list中插入元素,尤其是在首尾插入元素,效率很高,只需要改变元素的指针,但是vector要随机插入或删除数据需要前移或者后移,内存块的拷贝,另外,当该数组后的内存空间不够时,需要原创 2017-09-22 15:15:43 · 609 阅读 · 0 评论 -
模板不支持分离编译???
分离编译是什么? 所谓分离编译是指将函数的声明和定义分开放在.h和.cpp的文件中。这本开就是很正常的写法,但是当我们遇到模板时却不能这么做。这是为什么所以我们需要探索一下 。//template.h#include<iostream>using namespace std;template<class T>class MC{public: void fun();};//te原创 2017-08-18 11:47:57 · 279 阅读 · 0 评论 -
菱形继承
在探索菱形继承遇到的问题及其总结 先说什么是菱形继承如图(这只是一种) #include<iostream>using namespace std;class A{public: int _a;};class B: public A{public: int _b;};class C: public A{public: int _c;};class原创 2017-07-23 16:03:31 · 218 阅读 · 0 评论 -
多态和多态对象模型
1 单继承的多态,以以下代码为例class A{public: virtual void f1() { cout<<"A::f1"<<endl; } virtual void f2() { cout<<"A::f2"<<endl; } void f3() { cout<<"A::f3"原创 2017-07-30 16:59:25 · 218 阅读 · 0 评论 -
引用计数写时拷贝
拷贝可以概括性的分为以下几类 1 s1和s2分别有它们自己的值,我们需要将s1的对应的空间释放掉然后赋给其s2的值 2 s1和s2分别有它们自己的值,但是s1还有其他别名,我们需要引入计数,为了防止其在析构时程序崩溃(多次释放同一块内存空间)。如图 3 s1和s2对应同一块内存空间,那么我们就不需要赋值了。String& operator==(const string s){原创 2017-07-12 10:07:09 · 181 阅读 · 0 评论 -
C/C++动态内存管理
语言的动态内存管理 1.C语言使用malloc/calloc/realloc/free进行动态内存管理,它们都是在堆上开辟void test(){ int *p1=(int*)malloc(sizeof(int)*4); free(p1); int *p2=(int*)calloc(4,sizeof(int)); int *p3=(int*)realloc(p2,sizeof(i原创 2017-07-11 14:53:52 · 262 阅读 · 0 评论 -
拷贝构造的N种情况
1.C++对传参合传返回值时构造的优化处理的总结。 在c++中,传参和传返回值时,如果是引用类型,则不用调用拷贝构造函数,直接返回别名。当语句为一个表达式时,编译器会选择优化,将构造函数与拷贝构造合并。在C++中,调用几次构造函数和拷贝构造函数,就会相应的调用几次析构函数。只有当一个对象已经存在时,d=f()才调用赋值运算符重载,如果对象不存在,则调用的是构造函数。2.再完成下面的题目。 T原创 2017-07-10 21:48:09 · 279 阅读 · 0 评论