![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
getmethoder
这个作者很懒,什么都没留下…
展开
-
C++特性——继承
学习C++有一段时间了,今天就来总结一下C++的第二个特性——继承。首先介绍一下继承的概念,所谓的继承就是用已有的类(基类),根据实际需要定义新的类(派生类)的过程,其实质是代码复用。继承关系如下图所示:继承的语法结构:类标识 派生类类名:继承方式:基类类名...原创 2019-07-03 15:12:42 · 167 阅读 · 0 评论 -
C++用两个栈实现一个队列
之前总结面经,看到了这样一个面试题:C++用两个栈模拟实现一个队列。看到这个问题,相信很多人都是在心里鄙视面试官,这是人问的问题吗?不但要写栈,还要用栈实现一个队列,这代码量也忒大了吧!如果你第一反应也和上面一样,那说明你的C++功底还是有些薄弱,为什么一定要自己写呢,人家面试官有没有强调说要让你写一个栈,为什么不用STL呢?话不多说,上代码:#include<iostream>...原创 2019-08-17 18:27:11 · 276 阅读 · 0 评论 -
STL容器与迭代器
C++提供了功能强大的标准模板库STL,STL的六大组件分别是容器、配接器、迭代器、泛型算法、仿函式、空间配置器。今天我们来看一下容器。STL容器STL容器分为三类,顺序容器、关联容器和容器适配器。顺序容器有vector、list、deque。vector是矢量容器,底层是一个动态开辟的一维数组,每次扩容为原来的2倍。vector容器对象常用方法有push_back、pop_back、i...原创 2019-08-20 17:41:03 · 279 阅读 · 0 评论 -
模拟扑克牌游戏的洗牌
大家都很喜欢玩扑克牌,那么如果面试官让你用计算机模拟一个扑克游戏的发牌或者洗牌,你会怎么做呢?代码如下:#include<stdio.h>#include<stdlib.h>#include<time.h>#include<string.h>#define POKER_NUM 52//s:黑桃,h:红桃,c:梅花,d:方块char p...原创 2019-08-18 18:25:28 · 978 阅读 · 0 评论 -
指针和引用的区别
指针和引用的区别:指针可以不用初始化,通过赋值可以指向任意同类型的内存,引用必须做初始化,而且一旦引用绑定一块内存后,就不可以在修改了sizeof运算符下,指针的大小永远是4(x64为8),引用的大小是引用所绑定内存的大小指针可以为空,引用一定不为空使用指针时编译器一定会对其检测是否为空,空指针访问,而引用则不需要检测是否为空,因为不存在空的引用其实指针和引用在底层汇编山是相同的,定...原创 2019-08-08 12:04:49 · 230 阅读 · 1 评论 -
排序算法总结——算法比较
前面介绍了常用到的一些排序算法,今天我们就把这些算法放在一起比较一下这些算法的优缺点。俗话说没有最好的排序算法,只有最合适的算法,不同的算法各有各的优点,所以选择排序算法的时候,要尽可能的的“扬长避短”,当然也要“具体问题具体分析”。比较一下常见的排序算法如下:...原创 2019-07-22 23:55:06 · 135 阅读 · 0 评论 -
排序算法总结——选择排序和基数排序
前面介绍了很多排序算法,今天我们来介绍一下基数排序算法。基数排序算法也称“桶排序”算法,因为它真的是用10个“桶”来排序的,所以因此而得名。基数排序的基本思想是,对一组数据元素,创建十个队列,每一个队列代表0~9十个数字,然后对数据按个位入相应的队列,然后再按顺序出队,接着再以十位重复之前的操作,再以百位…其中数位不够的数据入“0号队列”,最终使得数据全部有序。代码如下:#define SI...原创 2019-07-21 23:59:40 · 396 阅读 · 0 评论 -
排序算法总结——冒泡排序和快速排序
提到排序算法,大家首先想到的肯定是冒泡和快排了,因为冒泡排序最简单,快速排序速度最快。今天就来介绍一下这两个排序算法。冒泡排序首先来看冒泡排序,其基本思想是一组数据,两两两个对其进行比较,将大的数据元素置于右边,小的数据元素置于左边,这样最大的元素将会置于最右边,接着重复进行之前的操作,以此类推,直至最左边的元素都有序,此时所有数据元素都变得有序。如下图:代码如下:void Bubble...原创 2019-07-21 18:39:51 · 948 阅读 · 0 评论 -
排序算法总结——堆排序和归并排序
前面介绍了插入排序和shell排序,今天我们来看看堆排序和归并排序。堆排序说起堆排序,先来说一下堆。堆分为大根堆和小根堆,大根堆就是一颗双亲节点元素大于孩子节点元素的二叉树,小根堆正好相反,是一颗双亲节点的元素小于孩子节点元素的二叉树。**堆排序的思想是先利用数据建立大根堆,然后再将根元素放置最后保存起来,然后不断调整大根堆,将新的跟插入到旧根的前面,直至将最后一个元素保存,这样保存的元素将...原创 2019-07-21 12:30:39 · 370 阅读 · 0 评论 -
排序算法的总结——插入排序与shell排序
在我们的日常生活中,很多地方都会直接或者间接的使用排序这种操作,比如中午去学校食堂买饭的时候需要排队,将同学的的资料按学号排列等等,排序与我们的生活息息相关。在计算机语言中,很多时候我们对一些数据进行处理的时候,也会用到排序,特别是处理大数据的时候,经常会用到一些排序的算法,下面就来介绍一些常用的算法吧。这里我们默认所有排序都是升序排序。插入排序将一组数据从后往前遍历,遇到第一个小于自己的...原创 2019-07-21 11:52:29 · 194 阅读 · 0 评论 -
引用总结
首先看下面代码: int main() { int a = 10; int &b =a; b = 20; std::cout << a << std::endl; std::cout << b << std::endl; ...原创 2019-07-20 19:36:56 · 112 阅读 · 0 评论 -
程序的编译链接原理
对于计算机语言的初学者来说,通常程序都是在集成开发环境(IDE)下开发的,而很少有人去了解程序的编译、链接原理,今天就让我们来揭开程序编译链接原理的神秘面纱。话不多说先上代码:#include <stdio.h>int Sum(int a,int b,int c){ return a+b+c;}int main(){ Sum(10,20,30); printf(...原创 2019-07-17 20:53:35 · 239 阅读 · 0 评论 -
内联函数——inline关键字总结
内联函数是C++为了提高程序运行速度而作出的一种改进。在函数定义前加上inline关键字,就可以使用内联函数的特性。强调一下,必须是函数定义的地方,原因后面解释。普通函数和内联函数的主要区别是函数与程序的组合形式的不同。首先,inline关键字在函数编译阶段生效,其作用是在函数的调用点直接展开函数的代码,若本文件没有调用内联函数的地方,编译器将不对其函数生成符号,此时内联函数只是对本文件可见。...原创 2019-07-20 13:14:31 · 899 阅读 · 0 评论 -
变量和内存总结
大家都知道变量分为全局变量、局部变量和static修饰的变量这三类,其中全局变量是定义在函数外部的,只有程序销毁时才会失效。局部变量是指定义在函数内部的变量,同时形参也属于局部变量。static属于静态关键字,可以修饰全局变量,也可以修饰局部变量,但是局部变量中的形参不能用static修饰,同时函数也不可以用static修饰。根据存放数据的不同可以将内存主要分为代码段、全局(静态)变量区、栈区和...原创 2019-07-20 08:58:36 · 151 阅读 · 0 评论 -
指针 +- 数字究竟代表着什么?
C语言:同样是腰椎间,为何指针你如此突出?指针:因为我优秀啊,哈哈哈…how old are 指针(怎么老是指针啊),为何指针总能带来这么多的争议?话不多说,先看代码:int main(){ int arr[10] = {1,2,3}; int *p = arr; //p++; p = (int *)((int)p+1); *p = 10; printf("%d,%d\n"...原创 2018-11-04 14:08:41 · 3898 阅读 · 1 评论 -
C++特性——封装
众所周知,C语言是一门面向过程的语言,而我们的C++则是面向对象的语言(OPP,面向对象的思想),而但凡是面向对象的语言都会具有封装、继承、多态这三个特性,当然C++也具有上述这三个特性,今天我们先来总结一下这三大特性之一的封装特性。相比于C语言,C++引入了类和对象的概念,类中提供了3个访问限定符:public 共有访问限定符 该类允许在任意位置调用(访问)private 私有...原创 2019-07-01 11:29:13 · 166 阅读 · 0 评论 -
C++智能指针——揭秘auto_ptr为什么被摒弃?
一般情况下,使用栈上的内存资源都是系统来开辟内存,使用完之后再由系统释放掉该内存。相反,使用堆上的内存资源时,需要手动使用new关键字来开辟内存,使用完之后再用delete关键字来手动释放内存资源,如果忘了释放内存资源,将会造成内存泄漏,存在不安全隐患。那么如何实现手动开辟系统内存,然后让系统来完成内存释放呢?这里我们引入智能指针的思想:在使用系统内存时,手动开辟堆内存,生成相应的对象,使对象...原创 2019-07-05 17:29:55 · 4096 阅读 · 2 评论 -
C++特性——多态
多态,顾名思义就是“多种形态”,指的是同一个方法的行为随上下文而异,可以简单地概括为“一个接口,多种方法”。相比于C++的封装和继承,多态的本质是“接口重用”。C++的多态特性是通过虚函数实现的。虚函数,是指允许被其子类重新定义的成员函数。C++允许子类重新定义父类虚函数的做法,称为“覆盖”(重写)...原创 2019-07-04 14:42:55 · 176 阅读 · 0 评论 -
C++中const与static的区别
在C++中const和static因为用法比较类似,所以很多人认为两只之间存在什么关系,其实他们两个之间没有半毛钱的关系!但是这个问题却是面试过程中经常会被问到的问题之一,下面我们就来看一下他们的区别吧。constC++中const用来定义常量常量不能做左值被修改,而且常量必须初始化const常量初始化值为明确的值在程序编译阶段被初始值替换,无法通过间接访问修改。代码如下:int ...原创 2019-08-31 12:34:38 · 529 阅读 · 0 评论