
C++
Cyrus_wen
这个作者很懒,什么都没留下…
展开
-
继承
继承成员访问限定符有:public(公有)private(私有)protected(保护)对应的继承有三种关系:public(公有继承)private(私有继承)protected(保护继承)继承是一种复用手段。三种继承关系下基类成员的在派生类的访问关系变化 总结: 1. 基类的私有成员在派生类中是不能被访问的,如果一些基类成员不想被基类对...原创 2018-07-19 17:22:38 · 228 阅读 · 0 评论 -
C/C++复习
C/C++复习C/C++基础语法static关键字作用 修饰变量 存储位置 - 静态存储区链接属性,本文件内有效修饰函数 链接属性 - 本文件内有效修饰成员变量和成员函数 静态成员函数没有this指针, 类和对象都可以调用静态成员函数不能是虚函数静态成员变量必须在类外初始化static和全局的区别const的作用 修饰变量不能被修改,指针可以修改但是注意编译...原创 2018-08-18 23:29:34 · 318 阅读 · 0 评论 -
智能指针
auto_ptr我们申请一块内存并且绑定在auto_ptr p上面,当p离开作用域之后调用析构函数。但是存在一些问题。 auto_ptr赋值给另一个auto_ptr之后所有权转移,但是所有权不会转移回来。auto_ptr不能指向new[]auto_ptr不能指向容器shared_ptr共享所有权多个指针可以指向一块内存,最后一个shared_ptr离开作用域的时候释放内...原创 2018-08-18 23:28:32 · 218 阅读 · 0 评论 -
布隆过滤器
布隆过滤器 它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。 基本概念如果想要判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。链表,树等等数据结构都是这种思路. 但是随着集合中元素的增加,我们需要的存储空间越...原创 2018-08-13 16:54:05 · 262 阅读 · 0 评论 -
c++之set
set的底层是平衡搜索树。搜索树:左边小右边大搜索树的时间复杂度是O(N)普通搜索树 左边比根节点小,右边比根节点大 O(N)AVL树 严格平衡 左右高度差不超过1 O(logN)红黑树 近似平衡 最长路径不超过最短路径...原创 2018-08-13 15:54:55 · 269 阅读 · 0 评论 -
C++强制类型转换
C++强制类型转换C语言隐式类型转换 – 相关类型 强制类型转换 – 不相关类型 C++static_castreinterpret_castdynamic_castvoid Test(){ int i = 1; //隐式类型转换 double d = i; printf("%d %.2f\n",i, d); in...原创 2018-08-13 09:30:28 · 229 阅读 · 0 评论 -
初始化列表
初始化列表1. 什么是初始化列表? 与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。 2. 为什么使用初始化列表 初始化类的成员有两种方式,一是使用初始化列表,二是在构造函数体内进行赋值操作。使用初始化列表主要是基于性能问题,对于内置类型,如int, float等,使用初始化类表...原创 2018-08-12 21:11:50 · 1489 阅读 · 0 评论 -
C++强制类型转换
C++强制类型转换void Test(){ int i = 1; //隐式类型转换 double d = i; printf("%d %.2f\n",i, d); int* p = &i; //显示类型转换 int address = (int)p; printf("%x, %d\n", p, address);}...原创 2018-08-12 20:27:09 · 231 阅读 · 0 评论 -
迭代器的基本使用(遍历)
迭代器的基本使用(遍历)一、定义 迭代器提供一些基本操作符:*、++、==、!=、=。这些操作和C/C++“操作array元素”时的指针接口一致。不同之处在于,迭代器是个所谓的复杂的指针,具有遍历复杂数据结构的能力。其下层运行机制取决于其所遍历的数据结构。因此,每一种容器型都必须提供自己的迭代器。事实上每一种容器都将其迭代器以嵌套的方式定义于内部。二、应用接下来我简单...原创 2018-08-02 10:26:49 · 1631 阅读 · 0 评论 -
new和delete的用法(摘自百度知道)
对于计算机程序设计而言,变量和对象在内存中的分配都是编译器在编译程序时安排好的,这带来了极大的不便,如数组必须大开小用,指针必须指向一个已经存在的变量或对象。对于不能确定需要占用多少内存的情况,动态内存分配解决了这个问题。 new和delete运算符是用于动态分配和撤销内存的运算符。 一、new用法 1.开辟单变量地址空间 使用new运算符时必须已知数据类型,new运算符...转载 2018-07-22 17:26:10 · 242 阅读 · 0 评论 -
旋转字符串(左旋)
题目要求:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。思路:解法一:开辟了新的空间。class Solution {public: string LeftRotat...原创 2018-09-22 22:59:07 · 225 阅读 · 0 评论