
C++
菜菜也逆袭
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c++的重载,缺省参数,以及命名空间
C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。 关于c++的几个小方面的想法1.为什么c++支持重载C++支持函数重载而C语言不支持函数重载。 而所谓的函数重载就是...原创 2018-06-23 11:29:34 · 146 阅读 · 0 评论 -
剑指offer-两个链表的第一个公共结点
题目输入两个链表,找出它们的第一个公共结点。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: &nbs...原创 2018-11-23 20:19:21 · 758 阅读 · 0 评论 -
剑指offer--第一个只出现一次的字符位置
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 思路:想要提高时间复杂度,节约时间,那就只能空间换时间。一个空间换时间很有效果的数据结构是哈希表,哈希表使用时要求,首先使得数据范围,这里它说是字符串,字符就只有256中,那一个256大小的数组就可以存储,当然还可以用位图。我们先遍历...原创 2018-08-24 14:58:18 · 188 阅读 · 1 评论 -
剑指offer--整数中1出现的次数(从1到n整数中1出现的次数)
题目求出1-13的整数中1出现的次数,并算出100-1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。class Solution {public: int Number...原创 2018-11-23 20:16:08 · 773 阅读 · 0 评论 -
LeetCode--461.汉明距离
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0)↑ ↑上面的箭头指出了对应二进制位不同的位置。思路:我们先将xy值相疑惑,然后再数这个结果中1的个数。代码实现...原创 2018-10-24 16:20:04 · 235 阅读 · 0 评论 -
LeetCode面试题--宝石与石头
给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = “aA”, S = “aAAbbbb”输出: 3示例 2:输入: J = “z”, S = “ZZ”输出: 0注意...原创 2018-10-10 21:47:28 · 992 阅读 · 0 评论 -
面向对象的三大特性
面向对象的三个特征时:封装,继承,多态1封装将客观事物封装称抽象的类,每个类的属于自己的内部属性和方法有选择的让信任的类或对象操作,对不可信的进行隐藏。而且内部操作对外部不可见,封装这一特性体现了保护性2继承在无需重新编写重复代码的情况下实现现有类的所有功能,并可以对其功能进行扩展,继承体现了可重用性3多态一个类实例的相同方法在不同情形下的不同表现形式。多态使得不同的内部结构的对象共享...原创 2018-10-19 19:35:51 · 198 阅读 · 1 评论 -
剑指offer--机器人的运动范围
地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?思路:首先我们要设定一个函数,来确定这个格子是否可以...原创 2018-10-08 19:18:43 · 148 阅读 · 0 评论 -
剑指offer--翻转单词顺序列
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student.a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?思路:我们采取先把单词整个反转,也...原创 2018-10-08 19:08:45 · 276 阅读 · 0 评论 -
C++模拟实现循环顺序队列
C++中也会经常用的线性表链表,对比各自特点, 线性表更适合完成栈的操作,因为线性表实际是数组完成的,数据依次挨着排放,不需要前插把数据依次后移。 而链表更适合队列的操作,而链表为了方便数据的尾插,头删,推出了带头节点的循环队列。一下就是实现代码://带头的循环顺序队列#include<iostream>using namespace std;typedef int Da...原创 2018-09-14 22:46:29 · 495 阅读 · 0 评论 -
C++模拟实现string(现代简易深拷贝写法)
具体关于string函数写时注意,看注释哦#include&lt;iostream&gt;#include&lt;string&gt;using namespace std;class String{public: String(const char* str = "") :_str(new char[strlen(str)+1]), _si...原创 2018-09-06 17:12:20 · 371 阅读 · 0 评论 -
C++模拟实现string(现代简易写时拷贝写法)
什么是写时拷贝我们在只前的博客中讲述了深拷贝的写法string的深拷贝现代写法,我们window下vs就采用的就是深拷贝,而linux平台下则是采用写时拷贝的写法。写时拷贝顾名思义,就是写的时候再进行拷贝。也就是说,当我们拷贝构造或者赋值的时候,实际上只进行的浅拷贝,两个指针指向的是同一块new的空间而且拿了一块空间来做计数,记录着已经有多少指针同时指向这块空间了。当我们需要修改这个空间内容的...原创 2018-09-11 22:52:09 · 188 阅读 · 0 评论 -
C++内联函数
2.内联函数 3.友元 4.static成员 5.N中构造拷贝构造的优化 Test1中调用了次AA的拷贝构造函数,次AA的赋值运算符函数的重载。 Test2中调用了次AA的拷贝构造函数,次AA的赋值运算符函数的重载。 Test3中调用了次AA的拷贝构造函数,次AA的赋值运算符函数的重载。 class AA {}; AA f (AA a) { return...原创 2018-08-21 14:30:14 · 532 阅读 · 0 评论 -
C++ 友元函数和static成员
友元函数友元函数是指某些函数或者是变量,虽然不是类内的成员却能够访问类的所有成员的函数。类授予它的友元特别的访问权。实现类内数据共享,减少开销,提高效率。 注意的是友元函数是可以访问类内的的私有成员。但是,没有隐含存在的this指针,所以我们要自己传入一个类指针。而且,友元不可以继承。就像你爸爸的好朋友可以共享好吃的,和你就不一定了。friend &lt;返回类型&gt; &lt;函数名...原创 2018-08-21 14:55:29 · 1186 阅读 · 0 评论 -
C++ --const变量和const函数
const修饰变量const 在概念上是简单的:用“const”修饰的变量变为常量,不能被程序修改。在数据声明时,const关键字指定的对象或变量是不可修改的。 const int i = 5; //i++;//错误 //i=10;//错误在C++中const的常用做法就是替代define,define定义的常量不进行语法检查,增加了错误的可能性。//define maxa...原创 2018-08-20 19:13:59 · 391 阅读 · 0 评论 -
new和delete详解
什么是newnew 是C++中的一个关键字,同时也是操作符。我们在使用new在堆上开辟空间创造对象时。实际上做了三件事: 1.首先开辟一块内存空间,和malloc不同,malloc开辟失败返回NULL而new开辟失败直接报错, 2.然后调用了构造函数,当我们new 一个自定义类型时,及new了一个对象,系统会自动调用对象的构造函数进行初始化。 3.返回正确的指针class A{...原创 2018-08-06 18:40:27 · 469 阅读 · 0 评论 -
C++类与面向对象
1.什么是面向对象?早期的计算机编程比如C语言虽然是高级语言但是基于面向过程的编程,例如实现算术运算1+1=2,通过设计一个算法就可以解决当时的问题。随着计算机技术的不断提高,计算机被用于解决越来越复杂的问题。一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。 面向过程就是分析出解决问题所需要...原创 2018-07-24 15:43:33 · 230 阅读 · 0 评论 -
c++引用
引用引用引入了对象的一个同义词。定义引用的表示方法与定义指针相似,只是用&amp;代替了*。引用(reference)是c++对c语言的重要扩充。引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &amp;引用名=目标变量名; 引用的特点: ①一个变量可取多个别名。 ②引用必须初始化。 ③引用只能在初始化的时候引用一次 ,不能更改为转...原创 2018-06-26 10:41:53 · 161 阅读 · 0 评论 -
剑指offer--矩阵中的路径
题目请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含...原创 2018-11-23 20:33:37 · 726 阅读 · 0 评论