04 2018 档案
摘要:转自:https://blog.csdn.net/yf_li123/article/details/75003425#comments (1)对于关联容器(如map,set,multimap,multiset),删除当前的iterator,仅仅会使当前的iterator失效,只要在erase时,递增
阅读全文
摘要:转自http://www.cnblogs.com/QG-whz/p/5140930.html 前言 几个星期前去面试C++研发的实习岗位,面试官问了个问题: new与malloc有什么区别? 这是个老生常谈的问题。当时我回答new从自由存储区上分配内存,malloc从堆上分配内存;new/delet
阅读全文
摘要:本文转自: http://www.cnblogs.com/George1994/p/6934930.html 删除 因为根据BST中的规则,选择该结点的左子树中最大值和右子树中最小值替代掉原本要删除的点的值,再将改点删掉即可,所以这里只会讨论那个删掉的点。 分为以下情况: 删除结点的左右子结点均为空
阅读全文
摘要:红黑树 性质 红黑树的结点都是红色或者黑色 根结点是黑色 所有叶子都是黑色(这里的叶子结点是空结点) 每个红色结点必须有两个黑色的子结点 从任何一个节点到其每个叶子的所有简单路径都包含相同数目的黑色结点 性质1和性质3总是能够保持着; 性质4只有在这些情况下才会发生作用: 增加红色结点 将黑色结点重
阅读全文
摘要:转自:http://blog.chinaunix.net/uid-27411029-id-4131123.html 进程与线程的区别: 通俗的解释 一个系统运行着很多进程,可以比喻为一条马路上有很多马车 不同的进程可以理解为不同的马车 而同一辆马车可以有很多匹马来拉--这些马就是线程 假设道路的宽度
阅读全文
摘要:C分为四个区:堆,栈,静态全局变量区,常量区 C++内存分为5个区域(堆栈全常代 ): 堆 heap : 由new分配的内存块,其释放编译器不去管,由我们程序自己控制(一个new对应一个delete)。如果程序员没有释放掉,在程序结束时OS会自动回收。涉及的问题:“缓冲区溢出”、“内存泄露” 栈 s
阅读全文
摘要:目录 理解智能指针的原理 智能指针的使用 智能指针的设计和实现 理解智能指针的原理 智能指针的使用 智能指针的设计和实现 1.智能指针的作用 C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。程序员自己管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,
阅读全文
摘要:1.vector数据结构 vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。因此能高效的进行随机存取,时间复杂度为o(1);但因为内存空间是连续的,所以在进行插入和删除操作时,会造成内存块的拷贝,时间复杂度为o(n)。另外,当数组中内存空间不够时,会重新申请一块内存空间并进行内存拷贝
阅读全文
摘要:字符数组的长度计算:必须以终止符’\0'作为边界,但对字符数组赋值时,有两种方式: 1:定义时用字符初始化 (1)char chs[7] = {'a', 'c', '0', 'z', '3','d'}; // 长度为6 上式等价于: (2)char chs[7] = {'a', 'c', '0',
阅读全文