c++
望遇wjk
不为何,只求进步
展开
-
网易真题:缩写
网易真题:缩写题目描述在英文中,我们会把一些长的名字或者短语进行缩写。例如"looks good to me"缩写为"lgtm",短语中的每个单词的首字母组成缩写。现在给出一个字符串s,字符串s中包括一个或者多个单词,单词之间以空格分割,请输出这个字符串的缩写。输入描述:输入包括一个字符串s,字符串长度length(1 ≤ length ≤ 50),字符串中只包括小写字母(‘a’~‘z’)和空格。输出描述:输出一个字符串,即缩写的结果。示例1输入looks good to me输出lg原创 2020-05-27 16:06:52 · 424 阅读 · 0 评论 -
删除公共字符
剑指offer:删除公共字符题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”输入描述:每个测试输入包含2个字符串输出描述:输出删除后的字符串示例1输入They are students.aeiou输出Thy r stdnts.解题思路:1.我们可以申请一个数组用来代表256个字符是否存在于s2字符串中,如果有,则标记为1,如果没有则标记为0原创 2020-05-27 15:48:57 · 204 阅读 · 0 评论 -
替换空格
剑指offer:替换空格请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。我们正常的思维都是:1.从前向后遍历,遍历到空格,然后把“%20”插入,“%20”占有3个字符,空格只占有1个字符,那也就意味着需要将后面的字符进行向后移动,那么就增加了时间复杂度,总体下来时间复杂度为O(n*n);2.我们可以换个思维,可以先计算出总共有多少个空格,这样就知道了新字符串的长度,然后从后向前遍历,遇到空格原创 2020-05-27 15:20:30 · 127 阅读 · 0 评论 -
二维数组中的查找
剑指offer:二维数组中的查找在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。1.用rowcount计算行的长度,用colcount计算列的长度;2.从左下角或者右上角开始走,我这里以左下角开始走;3.如果当前的值大于要找的值,那么就向上走;如果当前的值小于要找的值,那么就向右走。具体的代码如下:class Solution {public:原创 2020-05-27 14:24:10 · 145 阅读 · 0 评论 -
多态的原理、单继承和多继承关系的虚函数表
1.多态的原理1.1 虚函数表class Base{public: virtual void func() { cout << "func()" << endl; }private: int _a = 10;};int main(){ cout << sizeof(Base) << endl; system("pa...原创 2019-11-11 23:32:52 · 251 阅读 · 0 评论 -
多态的概念、抽象类、虚函数、重写、final、override
1.多态的概念多态的概念:多种形态,去完成某个行为,当不同的对象去完成时会产生不同的状态。比如:买菜,买房,买车这是三种不同的状态,而“买”就是同一种行为。2.多态的定义和实现2.2.1 多态定义的构成条件多态是在不同继承关系的类对象,去调用同一个函数,产生了不同的行为。比如student继承了person,person对象买票要全票,student对象买票是半票。同时继承中要构成多态...原创 2019-11-11 20:45:40 · 131 阅读 · 0 评论 -
继承与友元
我们接着上一篇的继承,今天我们来看一下继承和友元的关系。友元关系不能被继承,基类的友元对派生类没有特殊的访问权限。1.一个友元类的派生类,可以通过其基类接口去访问设置其基类为友元类的类的私有成员。#include <iostream>#include <cstdlib>using namespace std;class B;class A{ int a;...原创 2019-11-10 17:17:51 · 1060 阅读 · 0 评论 -
继承的基础知识(定义,访问方式和限定符、对象赋值转换、作用域、派生类的默认成员函数)
一、继承的概念及定义1.1继承的概念继承是面向对象程序设计使代码可以复用的重要手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称为派生类。继承呈现了面向对象程序设计的层次结构,是类设计层次的复用。#include <iostream>#include <string>#include <cstdlib>using nam...原创 2019-11-10 16:57:59 · 321 阅读 · 0 评论 -
vector::erase()
vector::erase():删除指定位置的元素或者删除指定范围内的元素。iterator erase(iterator itor):删除指定位置上的元素,迭代器指向下一个元素。iterator erase(iterase first,iterator last):删除一段范围内的元素,迭代器指向最后一个元素的下一个位置。举例说明:#include <iostream>#i...原创 2019-11-09 22:12:26 · 214 阅读 · 0 评论 -
单例模式
提到单例模式,我们要先理解以下设计模式,因为单例模式是设计模式的一种。设计模式设计模式是一套被反复使用、多数人知晓、经过分类的、代码设计经验的总结。使用设计模式的目的:为了代码可重用性、让代码容易被他人理解、保证代码可靠性。设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。单例模式一个类只能创建一个对象,即单例模式,该模式可以保证系统中该类只有一个实例,并提...原创 2019-10-28 23:47:02 · 91 阅读 · 0 评论 -
动态内存管理向相关面试题
今天我们先对前面的动态内存管理进行一个收尾。1.operator new和operator delete1.new是动态申请内存的操作符,它主要要完成两部分工作:a.申请空间:new的底层是由operator new来申请空间,而operator new是通过malloc来申请空间。b.调用构造函数(构造函数不开空间,是通过malloc来开空间)。//operator new:该函数实际...原创 2019-10-27 17:08:17 · 222 阅读 · 0 评论 -
动态内存管理-new/delete的搭配分析
在上一篇博客里,我总结了c语言中动态管理内存的malloc/realloc/calloc/free和c++中的new/delete的区别,现在我们再来回顾一下,c语言就以malloc/free为例。malloc/freenew/deletec标准中的函数c++中的操作符(关键字)返回值void*->强转不需要参数(字节数)new+类型申请失败-&...原创 2019-10-24 23:42:55 · 106 阅读 · 0 评论 -
static的作用
1.全局静态变量在全局变量前加上static关键字,全局变量就变成了全局静态变量。内存中的位置:静态存储区,在整个程序运行期间一直存在。初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式调用)。作用域:全局静态变量在声明它的文件之外是不可见的,准确来说是从文件之初到文件末尾。2.局部静态变量在局部变量前加上static关键字,局部变量就变成了局部静态...原创 2019-10-23 00:13:29 · 134 阅读 · 0 评论 -
动态内存管理-malloc/realloc/calloc/free和new/delete的区别
一、C语言的内存管理函数1.malloc函数原型:void *malloc(size_t size);作用:在内存的动态存储区中分配一个长度为size的连续空间传参:无符号整形数返回值:指向所分配连续存储域起始地址的指针函数未能成功分配存储空间(如内存不足)就会返回一个NULL指针,在调用该函数时应该检测返回值是否为NULL,确保非空之后再使用非常重要 malloc所...原创 2019-10-22 23:33:04 · 278 阅读 · 0 评论 -
STL-String的各类接口及用例
1.构造函数1.1函数接口函数含义string()构造空的string类对象string(const char* s)用c_string来构造string类对象string(size_t n,char c)string类对象中包含n个字符cstring(const string& s)拷贝构造函数string(const string...原创 2019-10-22 00:11:58 · 91 阅读 · 0 评论 -
STL-vector的各类接口
1.什么是vector向量vector是一个封装了动态大小数组的顺序容器(是一个能够存放任意类型的动态数组)。2.容器特性1.顺序序列:顺序容器中的元素按照严格的线性顺序排序。可以通过元素在序列中的位置访问对应的元素。2.动态数组:支持对序列中的任意元素进行快速直接访问。3.能够感知内存分配器(Allocator-aware),容器使用一个内存分配器对象来动态地处理它的存储要求。3.构...原创 2019-10-21 23:20:55 · 261 阅读 · 0 评论 -
c++ 静态数据成员
静态数据成员多个同类的对象之间实现数据共享,但是不用全局变量,可以用静态数据结构成员。那么静态数据成员该如何使用呢?下面跟我一起来看看吧!1.静态数据成员的定义class Test{private: static int a;//静态数据成员};静态数据成员在类内只能声明,不能定义.声明格式为:static 数据类型 变量名要对静态数据成员定义和初始化必须在类的外面也就...原创 2019-07-29 17:30:52 · 495 阅读 · 0 评论 -
C、C++结构体区别
C和C++中结构体有什么不同?1.C语言中的结构体只能由成员变量组成,而C++的结构体中既可以有成员函数,也可以有成员变量。C语言的结构体struct person{ char* _name; char* _gender; int _age;};C++的结构体struct person{ void InitPerson(char* name,char* gender,int ...原创 2019-09-27 00:05:56 · 219 阅读 · 0 评论 -
构造函数和析构函数
1.构造函数1.1 定义构造函数是一个类中特殊的成员函数,名字与类名相同,创建类类型对象时由系统编译器自动调用,保证每个数据成员都有一个合适的初始值,并且在对象的生命周期内只调用一次。1.2 特性构造函数是特殊的成员函数,构造函数虽然叫构造函数,但是完成的初始化对象的任务,不是创建对象的任务。1.函数名和类名相同2.无返回值。3.对象实例化时编译器自动调用对应的构造函数。4.构造函...原创 2019-09-27 18:03:46 · 101 阅读 · 0 评论 -
拷贝构造函数
1.拷贝构造函数1.1 定义拷贝构造函数:拷贝构造函数是一个特殊的成员函数,只有单个形参,该形参是对本类类型 对象的引用(一般用const修饰),在用已存在的类类型对象创建新对象时由编译器自动调用。1.2 特征1.拷贝构造函数是一个构造函数的一种重载形式。2.拷贝构造函数的参数只有一个且必须使用引用传参,如果使用传值的方式会引发无穷的递归调用。#include ...原创 2019-09-28 00:25:48 · 104 阅读 · 0 评论 -
类和对象的基础知识总结
类和对象的基础知识总结原创 2019-03-19 23:52:12 · 171 阅读 · 0 评论