摘要: general inserter允许用户在指定位置插入。实现代码如下: 1 #ifndef ITERATOR_H 2 #define ITERATOR_H 3 #include 4 5 //BackInsertIterator 6 template 7 class InsertIterator... 阅读全文
posted @ 2014-10-05 22:10 (@_@)ゞ 阅读(282) 评论(0) 推荐(0)
摘要: 当我们调用copy函数时,要确保目标容器足够大,例如://将vec的所有元素拷贝到以coll.begin()为起始地址的位置copy(vec.begin(), vec.end(), coll.begin());如果之前没有为coll分配好足够的内存,就会引发越界错误。如果我们无法提前为coll预分配... 阅读全文
posted @ 2014-10-05 21:53 (@_@)ゞ 阅读(1252) 评论(0) 推荐(0)
摘要: 优先级队列相对于普通队列,提供了插队功能,每次最先出队的不是最先入队的元素,而是优先级最高的元素。它的实现采用了标准库提供的heap算法。该系列算法一共提供了四个函数。使用方式如下:首先建立一个容器,放入元素:1 vector vec;2 insertNums(vec, 3, 7);3 insert... 阅读全文
posted @ 2014-10-05 21:14 (@_@)ゞ 阅读(244) 评论(0) 推荐(0)
摘要: 代码如下: 1 #ifndef QUEUE_H 2 #define QUEUE_H 3 #include "Exception.h" 4 #include 5 6 class EmptyQueueException : public Exception 7 { 8 public:... 阅读全文
posted @ 2014-10-05 19:43 (@_@)ゞ 阅读(204) 评论(0) 推荐(0)
摘要: 注意以下几点:1.Stack是一种适配器,底层以vector、list、deque等实现2.Stack不含有迭代器在本例中,我添加了几项功能,包括不同类型stack之间的复制和赋值功能,可以实现诸如Stack >和Stack >之间的复制和赋值,这主要依靠成员函数模板来实现。为了更方便的实现以上功能... 阅读全文
posted @ 2014-10-05 18:49 (@_@)ゞ 阅读(234) 评论(0) 推荐(0)
摘要: 下面提供三个函数的实现代码,这三个代码的共同点是:1.遇到错误,抛出异常2.出现异常时,把之前构造的对象全部销毁所以,这三个函数要么成功,要么无任何副作用。使用异常来通知使用者,所以在catch块中,处理完异常后要将异常再次向外抛出。代码如下: 1 #ifndef UNINIT_H 2 #defin... 阅读全文
posted @ 2014-10-05 17:59 (@_@)ゞ 阅读(216) 评论(0) 推荐(0)
摘要: 我们只需改动allocate和deallocate,来实现自己的内存分配策略即可。代码如下: 1 #ifndef ALLOCATOR_H 2 #define ALLOCATOR_H 3 4 #include 5 #include 6 7 template 8 class Allocato... 阅读全文
posted @ 2014-10-05 17:40 (@_@)ゞ 阅读(224) 评论(0) 推荐(0)
摘要: 自定义迭代器必须提供iterator_traits的五种特性,分别是迭代器类型、元素类型、距离类型、指针类型与reference类型。这里我们继承标准库提供的iterator即可。代码如下: 1 #ifndef ITERATOR_H 2 #define ITERATOR_H 3 #include ... 阅读全文
posted @ 2014-10-05 17:35 (@_@)ゞ 阅读(222) 评论(0) 推荐(0)
摘要: 采用自定义的operator运算符实现自己的内存分配策略,在某些时候可以提高程序的效率。C++中的new运算符,具体工作流程如下:1.调用operator new申请原始内存2.调用place new表达式,执行类的构造函数3.返回内存地址而delete操作符的工作是:1.调用对象的析构函数2.调用... 阅读全文
posted @ 2014-10-05 17:25 (@_@)ゞ 阅读(132) 评论(0) 推荐(0)
摘要: 功能尚不完全, 存在缺陷。定义Vector vec(10, 10)会报出异常, 原因是无法识别10是int型还是iterator型。注意几点:分配内存不要使用new和delete,因为new的同时就把对象构造了,而我们需要的是原始内存。所以应该使用标准库提供的allocator类来实现内存的控制。当... 阅读全文
posted @ 2014-10-05 17:21 (@_@)ゞ 阅读(360) 评论(0) 推荐(0)
摘要: Exception.h 1 #ifndef EXCEPTION_H 2 #define EXCEPTION_H 3 #include 4 #include 5 6 7 class Exception : public std::exception 8 { 9 public:10 ex... 阅读全文
posted @ 2014-10-05 17:04 (@_@)ゞ 阅读(217) 评论(0) 推荐(0)