
c++
文章平均质量分 85
fightHHA
这个作者很懒,什么都没留下…
展开
-
内联函数和宏定义的区别
内联函数和宏定义的区别用内联函数取代宏:1.内联函数在运行时可调试,而宏定义不可以; 2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定 义则不会; 3.内联函数可以访问类的成员变量,宏定义则不能; 4.在类中声明同时定义的成员函数,自动转化为内联函数。内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,在编译的时候内联函数可以直接...原创 2018-07-23 15:08:41 · 638 阅读 · 0 评论 -
STL的面试
1.说说std::vector的底层(存储)机制。vector就是一个动态数组,里面有一个指针指向一片连续的内存空间,当空间不够装下数据时,会自动申请另一片更大的空间(一般是增加当前容量的50%或100%),然后把原来的数据拷贝过去,接着释放原来的那片空间;当释放或者删除里面的数据时,其存储空间不释放,仅仅是清空了里面的数据。2.std::vector的自增长机制。当已经分配的空间...原创 2018-08-30 21:44:02 · 315 阅读 · 0 评论 -
C++中list、deque以及vector对比
C++中list、deque以及vector对比C++的容器类包括两大类:1.顺序存储结构,包括vector、list、deque等等; 2.关联存储结构,包括set、map、multiset等等;对比vector、list以及deque这三种顺序存储结构注: 顺序存储结构表明,其中的每个元素之间是有先后顺序的,这个顺序只和插入/删除等操作有关,而与元素的值无关。一、ve...原创 2018-08-20 16:33:34 · 2274 阅读 · 1 评论 -
C++STL常见面试题
C++STL常见面试题1.C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等2.标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检...原创 2018-08-20 16:23:55 · 1005 阅读 · 0 评论 -
面试题:vector和list有什么区别?分别在什么场景下应用?
面试题:vector和list有什么区别?分别在什么场景下应用?Vector:顺序表优点:和数组类似开辟一段连续的空间,并且支持随机访问,所以它的查找效率高其时间复杂度O(1)。 缺点:由于开辟一段连续的空间,所以插入删除会需要对数据进行移动比较麻烦,时间复杂度O(n),另外当空间不足时还需要进行扩容。List:链表优点:底层实现是循环双链表,当对大量数据进行插入删除时,其时间...原创 2018-08-20 16:03:40 · 1655 阅读 · 0 评论 -
内联函数能否声明为虚函数
内联函数能否声明为虚函数首先了解虚函数:虚函数定义:虚函数必须是基类的非静态成员函数,其访问权限可以是protected或public,在基类的类定义中定义虚函数的一般形式: virtual 函数返回值类型 虚函数名(形参表) { 函数体 }作用:虚函数的作用是实现动态联编,也就是在程序的运行阶段动态地选择合适的成员函数,在定义了虚函数后,可以在基类的派生类中对...原创 2018-08-17 09:35:42 · 2268 阅读 · 0 评论 -
从上往下打印二叉树
从上往下打印二叉树【题目】从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如:打印结果:8,6,10,5,7,9,11。【分析】二叉树遍历方式:前序,中序,后序,还有一种广度优先遍历,在对图遍历时涉及到,而二叉树可以看作退化的图,从例子中可以看出,打印顺序是按层决定的,观察发现,打印完根节点之后,然后打印其左右节点,再继续打印左节点的左右孩子和右结点的...原创 2018-08-19 10:28:17 · 264 阅读 · 0 评论 -
C++笔试题之String类的实现
C++笔试题之String类的实现这个在面试或笔试的时候常问到或考到。 已知类String的原型为:class String{public: String(const char *str = NULL);// 普通构造函数 String(const String &other);// 拷贝构造函数 ~String(void);// 析构函...原创 2018-08-15 21:01:02 · 331 阅读 · 0 评论 -
多态的原理及产生过程
多态的原理及产生过程用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。多态性是一个接口多种实现,是面向对象的核心。分为类的多态性和函数的多态性。多态用虚函数来实现,结合动态绑定。纯虚函数是虚函数再加上= 0。抽象类是指包括至少一个纯虚函数的...原创 2018-08-13 11:06:44 · 1805 阅读 · 0 评论 -
引用
学过C应该都知道指针,刚开始学习指针的时候,都会觉得指针很难,学完了指针才发现指针就是保存的地址。指针十分不安全,使用的不恰当,就会使程序出错!C++里面提出了“引用”代替指针,提高程序的安全性。下面来讲讲什么是引用。一、引用的定义引用不是新定义一个变量,而是给已经存在的变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用一块内存空间引用的声明方法:类型标识符 ...原创 2018-08-09 20:41:54 · 210 阅读 · 0 评论 -
C++的函数重载
C++的函数重载实现原理1.什么是函数重载? 函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表(参数个数、类型、顺序)的函数,这组函数被称为重载函数。重载函数通常用来声明一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。 简单总结如下:1)相同作用域 ...原创 2018-07-22 21:25:28 · 316 阅读 · 0 评论 -
为何c++支持函数重载而c语言不支持
为何c++支持函数重载而c语言不支持c和c++都属于编译型语言,也就是说着两种语言都需要经过编译、链接两个步骤才能够执行。如下图: 那么问题就出在编译这个环节上。c语言在编译器编译的时候,在库中的名字为:_function 而c++在编译器编译以后,在库中的名字是:_function_x 也就是说,c语言如果遇到重名函数,链接的时候就会报错 而c++会根据修饰规则进...原创 2018-07-22 20:45:03 · 396 阅读 · 0 评论 -
reorder list
[LeetCode] Reorder List 链表重排序Given a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…You must do this in-place without altering the nodes’ values.For example, Give...原创 2018-08-03 16:53:51 · 209 阅读 · 0 评论 -
面向过程与面向对象
面向过程与面向对象一、面向对象与面向过程的区别 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。可以拿生活中的实例来理解面向过程与面向对象,例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始...原创 2018-09-06 14:26:35 · 439 阅读 · 0 评论