01 2013 档案

摘要:http://www.cnblogs.com/zhuyp1015/archive/2012/07/25/2609129.html C++ 程序员都应该知道,只有在程序通过指向基类对象的指针或基类对象的引用调用虚函数时,才会发生运行时的多态现象。 对象的创建和复制不是运行时多态的,这一点严重影响了类的设计。所以,容器——无论是类似于数组或者结构体的内建容器还是用户自定义容器类——只能获得编译时类型一致的元素值。如果有一系列类之间存在继承关系,当我们需要创建、复制和存储对象,而这些对象的确切类型只有到运行时才能知道时,则这种编译时的检查会带来一些麻烦。 通常,解决这个问题的方法是增加一个间... 阅读全文
posted @ 2013-01-14 21:29 helloweworld 阅读(319) 评论(0) 推荐(0)
摘要:若一个类不能定义对象而只能做基类派生新类,称该类为抽象类。 (1)若类的构造函数或析构函数的访问权限为protected,则此类为抽象类。因为只有在派生类中可调用基类的保护成员。(构造函数或析构函数为private的类没有实用价值。) (2)含有纯虚函数的类为抽象类。 阅读全文
posted @ 2013-01-13 21:09 helloweworld 阅读(150) 评论(0) 推荐(0)
摘要:为什么要有纯虚函数 在定义基类时,有时只需要抽象出虚函数的原型,而无法定义其实现,因为其实现依赖于它的派生类。这是,可以把基类中的虚函数定义为纯虚函数。 格式:virtual <return type> FuncName(<ArgList>) = 0; 说明: (1)定义纯虚函数时,其实现不能在类内定义,但可在类外或派生类中定义,通常在派生类中定义。 (2)虚函数名赋值为0,与函数体为空不同,在未实现该函数之前,不能调用它(函数体为空的函数可以被调用)。 (3)含有纯虚函数的类是抽象类,因为虚函数没有实现部分,不能产生对象。 (4)可以定义抽象类类型的指针(或引用),以 阅读全文
posted @ 2013-01-13 21:05 helloweworld 阅读(352) 评论(0) 推荐(0)
摘要:如果没有[],则对于一维数组只是释放第0个元素所占内存, 对于二维数组只是释放第0行内存。 阅读全文
posted @ 2013-01-13 20:32 helloweworld 阅读(300) 评论(0) 推荐(0)
摘要:没有使用虚析构函数可能会出现的问题:#include <iostream>#include <string>using namespace std;class A {public: A() { cout << "A constructor" << endl; } ~A() { cout << "A destructor" << endl; }};class B: public A { char *buf;public: B() { buf = new char[10]; cout & 阅读全文
posted @ 2013-01-13 20:02 helloweworld 阅读(309) 评论(0) 推荐(0)
摘要:算法描述:功能:将一段数据转换为max-heap.(父节点不小于子节点的完全二叉树。)基本步骤:从某一子树开始进行下溯操作。开始的子树:Distance parent = (len - 2)/2; 最后的叶节点不必执行下溯。该子树执行完下溯后parent—;下溯:将空洞节点(这里是parent,即开始执行下溯的节点)与较大子节点对调,并持续下放,直到叶节点为止。SGI STL实现:// 以下這組 make_heap() 不允許指定「大小比較標準」。template <class RandomAccessIterator, class T, class Distance>void _ 阅读全文
posted @ 2013-01-05 17:34 helloweworld 阅读(675) 评论(0) 推荐(0)
摘要:pop_heap和sort_heap操作的对象是max-heap,即父节点比子节点大的heap结构。 push_heap是将使插入新元素后仍满足max-heap结构(原来也是max-heap结构)。 make_heap是讲一段数据转化为max-heap. 因为每次pop_heap可获得heap中键值最大的元素,所以可持续对整个heap做pop_heap操作,每次将操作范围从后向前缩减一个元素,便... 阅读全文
posted @ 2013-01-05 16:57 helloweworld 阅读(245) 评论(0) 推荐(0)
摘要:算法描述 置根节点于容器尾部,并调整heap结构使其满足max-heap. 算法的核心是根节点为空洞后heap结构的调整,而不是取最大值(最大值就是根节点)! 根节点为空洞后,为了满足max-heap结构,要割舍最下层最右边的叶节点,重新安插它的位置,即调整heap结构。 注:根节点即最大元素只是被置放于底部容器的最尾端,尚未被取走,可通过back()操作取其值,可通过pop_back()... 阅读全文
posted @ 2013-01-05 16:44 helloweworld 阅读(963) 评论(0) 推荐(0)
摘要:算法描述 完全二叉树,父节点值比子节点大。(不保证左节点值大于右节点值。) 新元素插入时要满足的条件 为了满足完全二叉树的条件,新加入的元素一定要放在最下一层作为叶节点,并填补在由左至右的第一个空格,也就是把新元素插入在底层vector的end()处。 用到的技巧 这里有一个小技巧,如果用array存储所有节点,并且将array的#0位置的元素保留(即下标从1开始),那么当完全二叉树的某个节点... 阅读全文
posted @ 2013-01-05 11:50 helloweworld 阅读(512) 评论(0) 推荐(0)
摘要:void transfer(iterator position, iterator first, iterator last) { if (position != last) { (*(link_type((*last.node).prev))).next = position.node; (*(link_type((*first.node).prev))).next = last.node; (*(link_type((*position.node).prev))).next = first.node; link_type tmp = lin... 阅读全文
posted @ 2013-01-04 15:44 helloweworld 阅读(251) 评论(0) 推荐(0)
摘要:iterator erase(iterator position) { link_type next_node = link_type(position.node->next); link_type prev_node = link_type(position.node->prev); prev_node->next = next_node; next_node->prev = prev_node; destroy_node(position.node); return iterator(next_node);}iterator erase(iterator... 阅读全文
posted @ 2013-01-04 15:33 helloweworld 阅读(391) 评论(0) 推荐(0)
摘要:/*stl_list.h文件中*/iterator insert(iterator position, const T& x) { link_type tmp = create_node(x); tmp->next = position.node; tmp->prev = position.node->prev; (link_type(position.node->prev))->next = tmp; position.node->prev = tmp; return tmp;}void push_front(const T& x) { i 阅读全文
posted @ 2013-01-04 15:30 helloweworld 阅读(469) 评论(0) 推荐(0)
摘要:一、 http://www.sgi.com/tech/stl/download.html 或 http://download.csdn.net/download/ljljlj/3658798 (侯捷配套源码) 已下载在G盘。 二、 linux下 /usr/include/c++/4.3 三、 已安装c++集成环境就有C++ STL源码。 阅读全文
posted @ 2013-01-03 16:00 helloweworld 阅读(2398) 评论(0) 推荐(0)
摘要:什么是静态链接,动态链接 如果函数库的一份拷贝是可执行文件的物理组成部分,那么我们称之为静态链接。 如果可执行文件只是包含了文件名,让载入器在运行时能够寻找程序所需的函数库,那么称为动态链接。 即根据函数库是不是可执行文件的组成部分区分静态链接和动态链接。 动态链接的优点 1、可执行文件的体积小。 2、虽然运行速度稍慢,但是能更加有效的利用磁盘空间,因为函数库只有在需要时才被映射到进程中。 3、操作系统内核保证映射到内存中的函数库能被使用它们的所有进程共享,从而提高系统整体性能,如果是静态链接,则每个文件都会拥有一份单独的拷贝,无疑浪费资源。 即动态链接的函数库是共享的。 阅读全文
posted @ 2013-01-02 14:33 helloweworld 阅读(203) 评论(0) 推荐(0)