C++
文章平均质量分 81
北辰北
万事心态是关键
展开
-
用Huffman树实现文件压缩与解压
用Huffman树实现文件的压缩与解压 我们先来了解一下什么是Huffman树? 我们平常所使用的Zip等压缩工具都是借助Huffman树实现的,Huffman是一种特殊的二叉树,它是一种加权路径最短的二叉树, 因此也称为最优二叉树。 (下面用一幅图来说明) 它们的带权路径长度分别为:图1: WPL=3*2+4*2+2*2+10*2=48 图2: WPL=3*3+2*3+4*原创 2017-08-07 19:22:21 · 3784 阅读 · 1 评论 -
C/C++面试常考关键字
C/C++面试常考关键字总结1.static关键字的作用? 1)、static 申明的变量为静态全局变量,该变量存储在静态数据区,当整个程序结束时该变量才会被释放,只是生命周期延长,作用域不受影响。 2)、static申明的变量定义时如果不初始化默认初始化为0 3)、被static修饰的变量只能作用于本文件内,即使被extern修饰也不行2.const,define的区原创 2017-08-08 20:43:32 · 4319 阅读 · 0 评论 -
内存对齐详解
首先定义两个结构体如下,我们看一下两个结构体大小:#include <iostream>using namespace std;struct A{ int a; char b; short c;};struct B{ char b; int a; short c;};int main(){ cout <<"sizeof(struct原创 2017-08-09 23:08:45 · 1517 阅读 · 3 评论 -
迭代器失效
在STL容器中,经常会出现迭代器失效导致程序运行时崩溃,那迭代器究竟是如何失效的呢? 迭代器(iterator)是一个可以对其执行类似指针的操作(如:解除引用(operator*())和递增(operator++()))的对象,我们可以将它理解成为一个指针。但它又不是我们所谓普通的指针,我们可以称之为广义指针,你可以通过sizeof(vector::iterator)来查看,所占内存并不是原创 2017-08-10 20:35:55 · 509 阅读 · 0 评论 -
C++三大特性封装继承多态
C++三大特性封装继承多态,继承方式方法,多态实现的必要条件 , 函数重载、覆盖(重写),隐藏(重定义)的区别。原创 2017-08-01 20:11:40 · 1622 阅读 · 0 评论 -
String类的实现
String类的实现,用深拷贝引用计数分别实现C++string类,string类的相关运算符重载。原创 2017-08-01 20:33:38 · 502 阅读 · 0 评论 -
C++常用数据类型转换的区别
C++常用数据类型转换的区别,static_cast 、dynamic_cast、const_cast、 reinterpret_cast的使用方法以及区别。原创 2017-08-04 00:16:12 · 603 阅读 · 0 评论 -
虚析构函数的作用
为什么基类的析构函数最好声明为虚函数?基类的虚函数声明为虚函数有什么作用?为什么将基类的析构函数声明为虚函数就可以很好的避免内存泄漏这一问题呢?原创 2017-08-03 21:27:47 · 459 阅读 · 0 评论