
C++
海马HiMark
这个作者很懒,什么都没留下…
展开
-
面试题剑指offer21-30
21栈的压入、弹出序列输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思想: //合法性检验 //定义一个辅助栈将入栈序列插入到辅助栈...原创 2018-10-12 16:43:11 · 168 阅读 · 0 评论 -
剑指offer面试题1-10
1二维数组中的查找在一个二维数组中,每一行元素都按照从这里写代码片左到右递增的顺序排序,每一列元素都按照从上到下递增的顺序排序。实现一个查找功能的函数,函数的输入为二维数组和一个整数,判断数组中是否含有该整数。 //例如查找元素7 //二位数组的规律是从左往右依次递增,从下往上依次递增 //可以根据待查元素,与起点位置比较,起点位置暂设为右上角(也可以选左下角) //如果待查元素...原创 2018-10-12 16:43:25 · 1383 阅读 · 0 评论 -
剑指offer面试题11-20
11二进制中1的个数输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思想://定义一个标志位flag,依次将flag向左移位,然后与数组的数字进行按位& //如果按位与的结果为1则说明输入数的二进制位的值为1 //直到移位到最左端(int 32位)class Solution {public: int NumberOf1(int n) {...原创 2018-10-12 16:42:58 · 224 阅读 · 0 评论 -
内存泄漏&悬挂指针(野指针)的危害及避免
内存泄漏&悬挂指针(野指针)的危害及避免什么是内存泄漏?内存泄漏:动态申请的内存空间没有正常释放,但是也不能正确使用的情况。内存泄漏的危害?一般用户感觉不到内存泄漏的危害,真正有危害的是内存泄漏的堆积,最终会耗尽系统所有的内存。 如果程序内存泄漏正好写到了系统使用的内存或其他程序使用的内存地址,那么会导致系统异常或程序崩溃。如何检测内存泄漏?使用工具 val...原创 2018-08-20 08:44:57 · 3202 阅读 · 0 评论 -
c++模板
如何编写一个通用的加法函数呢?通过宏实现 1 没有参数检测,导致安全性不高 2 不能像函数进行调试,编译期间代码替换,当代码很长时会增加代码量 3 宏只能处理整数或枚举类型的数据,其他外置类型的数据处理不了#include<iostream>using namespace std;#define ADD(x,y) ((x) + (y))int main(){...原创 2018-08-08 10:30:00 · 1020 阅读 · 0 评论 -
vector和list有什么区别?分别在什么场景下应用?
Vector:顺序表优点:和数组类似开辟一段连续的空间,并且支持随机访问,所以它的查找效率高其时间复杂度O(1)。 缺点:由于开辟一段连续的空间,所以插入删除会需要对数据进行移动比较麻烦,时间复杂度O(n),另外当空间不足时还需要进行扩容。List:链表优点:底层实现是循环双链表,当对大量数据进行插入删除时,其时间复杂度O(1) 缺点:底层没有连续的空间,只能通过指针来访问,所以查...原创 2018-08-15 09:26:37 · 11011 阅读 · 0 评论 -
STL中list的使用
list的底层结构list底层是一个带头节点的双向循环链表,任意位置插入和删除时间复杂度0(1) list迭代器 由于list底层是带头节点的双向循环链表,因此list的迭代器需要list的实现者自己提供迭代器怎么实现呢?迭代器的本质是指针,将指针封装出新的类型,指针有的操作,迭代器也视情况支持这些操作,比如:指针++,–,*,-> 等操作。迭代器在类中将这些操作重载出来...原创 2018-08-15 09:11:20 · 25604 阅读 · 2 评论 -
Vector容器原理及实现
aaaaaaaaaaaa原创 2018-08-12 11:06:06 · 967 阅读 · 0 评论 -
C++实现动态顺序表
C++实现动态顺序表#include<iostream>using namespace std;#include<assert.h>#define Datatype intclass Seqlist{ friend ostream& operator<<(ostream &_cout, const Seqlist&...原创 2018-08-07 16:57:48 · 749 阅读 · 0 评论 -
深浅拷贝的原理与区别
String类:标准库类型string类表示可变长的字符序列,定义在std中,专门用来管理字符串 一,浅拷贝浅拷贝,是指原对象与拷贝对象公用一份实体,仅仅是对象名字不同而已,其中任何一个对象改变都会导致其他的对象也跟着它变。如下面这段代码:#include&amp;amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;amp;gt;#include&amp;amp;amp;amp;amp;lt;cstr原创 2018-08-07 15:51:08 · 1383 阅读 · 0 评论 -
智能指针上
为什么引入智能指针?C++的动态内存需要用户自己维护,动态开辟空间,在出函数作用域或者程序退出时释放内存,否则会造成内存泄漏。当代码教长或者复杂时,我们会忘记释放空间。void Fun1(){ int*p = new int[10]; FILE* pFile = fopen(&quot;1.txt&quot;, &quot;r&quot;); if (pFile == NULL) { ...原创 2018-08-07 08:13:20 · 228 阅读 · 0 评论 -
Date日期类
自主实现C++date类#include&lt;iostream&gt;#include&lt;assert.h&gt;using namespace std;class Date{public: //构造函数(全缺省)d1 Date(int year=1900, int month=1, int day=1) //构造函数的初始化 ...原创 2018-07-31 08:10:07 · 247 阅读 · 0 评论 -
C++string类的实现
浅拷贝:简单的赋值浅拷贝 String s1(&amp;amp;amp;quot;himark&amp;amp;amp;quot;); Stirng s2=s1;S1和S2包含的指针对象同时指向一块内存 析构时delete会析构两次这个内存块,导致程序崩溃深拷贝: String s1(&amp;amp;amp;quot;himark&amp;amp;amp;quot;);原创 2018-07-25 17:27:58 · 428 阅读 · 1 评论 -
引用和指针的区别
引用: 不是定义一个新的变量,而是给一个已经定义的变量重新起别名类型&amp;引用变量名 =已经定义变量名引用的特点 1。一个变量可取多个别名 2。引用必须初始化 3。只能在初始化的时候引用一次,不能改变为再引用其他的变量const 引用 只能缩小范围不能放大 注意 { double a=1.1; //int &amp;b...原创 2018-06-30 10:10:19 · 1088 阅读 · 0 评论 -
系统内存不足的处理方案?
当operator new没有能力申请到所需要的空间时,通常会丢一个exception(异常类)打印出信息。常见的 C 习惯做法:定义一个与型别无关的宏,用来配置内存,并做检查,以确定配置成功。对于C++而言的宏如下#define NEW(PTR,TYPE) try{ (PTR)=new TYPE;} catch(std::bad_alloc&) { assert(0); }...原创 2018-12-17 10:26:05 · 728 阅读 · 0 评论