- 目前迭代器只能通过使用range-base(C++11)的for循环来访问.
- Container_Deque的内存模型通过一个指针来实现,并不和STL中的实现一致.
- 更新了Rb_Tree
- 对Rb_Tree的内存非法操作进行了修改,为关联式容器新增了"比较准则(Compare)":通过类模板和function obj来实现.
- 新增了Set和Multiset两个关联式容器.
- 新增了pair类型.
- 对list容器调用析构函数的内存错误进行了修复.
- 新增了Map和Multimap两个关联式容器.
- 在pair类型中新增了make_pair函数(该函数返回一个pair类型的对象).
- 新增了以hash_table为底层的无序容器:Unordered_Set,Unordered_Multiset,Unordered_Map,Unordered_Multimap.
- 新增了hash_table的迭代器.
- 无序容器中部分方法还未实现(rehash等).
对序列式容器进行了更新:
- 重载=,==,!=,>,<,>=,<=,[]等操作符;新增了返回const迭代器的cbegin,cend函数.
- 新增了多项操作函数(swap,resize,erase等).
对迭代器进行了更新:
- 新增了对使用迭代器对象循环的支持.
-
对序列式容器的const_iterator进行了修复.
-
对序列式容器的迭代器进行了重构.
对关联式容器进行了更新:
- 重载=,==,!=,>,<,>=,<=,[]等操作符;新增了返回const迭代器的cbegin,cend函数.
- 新增了多项操作函数(swap,resize,erase等).
对RB_Tree的迭代器进行了更新:
- 重载==,>,<,>=,<=,操作符;新增了step_count计数符来对遍历操作进行计数,可通过step函数返回其值.
- 对序列式容器及关联式容器新增了基于迭代器范围(range-of-iterator)的erase函数.
- 对list_iterator和基本迭代器(input,forward,bid,random)重载了==,>,<,>=,<=,操作符;新增了step_count计数符来对遍历操作进行计数,可通过step函数返回其值.
- 为hash_table新增了const_iterator;并新增了多项操作函数及操作符重载.
- 对无序容器新增了多项操作函数及操作符重载;新增了返回const_iterator的cbegin,cend函数.
- 对序列式容器中隐含的错误做出修改.
- 增加了对self_string(即将上传)的支持.
- 新增了以deque为底层的queue和stack容器.
- 新增了type_traits.
- 对list中clear函数未进行内存重分配的bug进行修复.
- 为deque与vector新增了empty函数.
- 为序列式容器新增了insert函数,该函数调用push_back函数.
- 新增算法库algorithm.
- 修复了algorithm中sort算法的错误,并为其增加了"比较准则(compare函数)"模板.
- 为迭代器添加了表示数据类型的TypeValue标签.
- 为List,RB_Tree,HashTable的节点类型添加了表示数据类型的TypeValue标签.
- 为list添加了传入元素的erase函数.
- 为algorithm新增了replace,unique函数;优化了sort对模板的依赖.
为algorithm新增了以下函数:
- mismatch : 返回第一个不相同的元素的迭代器位置
- copy : 将容器中的元素拷贝到另一个容器中(支持不同容器)
- adjacent_find : 找到并返回容器或范围中相同的元素值
- includes : 判断两个容器是否具有包含关系
- 对algorithm中的各算法进行空间优化.
- 在algorithm中新增了for_each函数. 该函数接受一个容器和带返回值的自定义函数参数,可将容器中的元素通过函数进行处理.
- 对algorithm中的sort算法进行了重写.
- 对各迭代器的递增操作符进行了修改.
- 为HashTable新增了rehash函数;该函数接受一个新的hash函数,并进行rehash操作.
- 对RB_Tree中的insert函数潜在的错误进行了修改.
- 对algorithm中的for_each函数进行了修改.
- 对array中的构造函数的隐式转换进行了限制.
- 对array中的swap函数进行了重写.
- 对vector中的构造函数的隐式转换进行了限制.
- 对vector中的swap函数进行了重写.
- 对deque中构造函数的隐式转换进行了限制.
- 对deque中的swap函数进行了重写.
- 对list中构造函数的隐式转换进行了限制.
- 对list中的swap函数进行了重写.
- 对deque进行重写,使用了新的数据结构:通过二级指针实现的动态数组(与SGI STL中的map_ptr一致).
- 新增了deque的迭代器:deque_iterator.
- 对type_traits进行了更新:新增了is_pod用于判断类型是否为普通的旧类型.
- 对algorithm进行了更新:新增了find_if,count_if,remove_if用于条件触发的函数.
- 对关联式和无序容器及其底层构造函数的隐式转换进行了限制,重写其swap函数.
- 对Rb_Tree中的InsertFixup函数存在的错误进行了修正.
- 对List中的alloc函数存在的错误进行了修正.
- 对iterator的构造函数的隐式转换进行了限制,新增了拷贝构造函数.
- 新增了insert_iterator,back_insert_iterator,front_insert_iterator.上述迭代器用于元素的插入,属于input_iterator. 同时为其添加了不同的inserter函数用于生成迭代器对象.
- 新增了reverse_iterator反向迭代器.同时为其添加了生成迭代器对象的reverser函数.
- 新增了functor adapters,实现在functional.hpp文件下,详细信息请阅读该文件下的README.
- 对各容器的运算符进行了const修饰,校对了各容器的型别定义标签.
- 在type_traits.hpp下新增了type_traits,用于对容器型别标签的萃取.
- 重写了algorithm下的swap函数,针对不同情况选择不同方式,提升了其运行效率.
- 新增了编译期运行的元函数(mate functors).实现在tmp.hpp下,作用与functional.hpp下的仿函数类似.
- 对algorithm中的sort函数进行了重写:使用以insert sort和quick sort为基础的intro sort.
- 对list_iterator中step_count的计数错误进行了修正.
- 重写了copy函数,对各种情况及是否pod类型做细分处理.
- 对sort函数进行了优化,为其内增了堆排序(heap_sort),且为quick_sort进行了优化.
- 修正了hash_table中insert函数存在的错误.
- 修正了RB_Tree中对内存的非法操作.
- 对以下函数进行了修改:
- 将mismatch函数更名为mismatch_element
- 将min和max函数更名为min_element和max_element
- 将adjacent_find修改为迭代器类型
- 新增以下函数:
- mismatch:对两个容器或范围中的元素进行比对,返回第一个不同的元素的迭代器.
- max,min:用于比较两个容器的大小,也可指定比较准则comp(仿函数).
- merge:用于合并两个容器或范围中的元素;与STL不同,支持不同类型容器的合并,合并后的容器也可与前者类型不同.
- search_n:指定一个值,返回指向容器或范围中连续出现该值n次的序列开头的迭代器.
- 对quick sort中的bug进行了修改.
- 新增了对容器元素进行回收处理的elem_destory函数,在memory.hpp下实现.
- 添加了对容器操作和成员函数调用的防御性设计.
- 现在const 容器也可使用普通的迭代器.
- 新增了防御性的报错提示,实现在errors.hpp下.
- 将map容器的pair中key类型改为const key.
- 为unordered_map新增了operator[],返回pair的value值.
- 新增了内存分配器,实现在memory_allocator.hpp下,其中包含三类分配器:
- malloc_allocator:直接调用malloc & free.
- default_allocator:通过freelist进行内存管理与分配,各容器默认使用此分配器.
- buddy_allocator:使用伙伴分配算法,便于向系统归还内存.
上述三种分配器都通过simple_alloc进行包装使用.
- 分配计数器(alloc_count):对simple_alloc的分配和归还操作进行计数,若计数不匹配则报错提示,对于容器只适用于部分序列式容器.
- 在trait_type中添加了便于使用的变量模板.
-
增加了便于traits classes使用的类型别名模板
-
其中变量模板在enableIfV中不可用:
template<typename t> enableIfV<isInt<t>> func(t n) { //.. }
在使用中会报错
- 在type_traits下新增判断类是否有默认构造函数的is_trivial以及ifThenElse.
- 修复了容器中操作符对分配器模板参数的依赖.
- 新增了针对容器的线程锁thread_lock类,该类对传入的容器进行加锁包装.实现在container_lock.hpp下.
- 修改了算法中的search及search_n;为迭代器增加了越界检测.
- 修改了queue及stack的模板参数,使其支持除deque外的更多容器.
- 对self_string进行了更新,新增insert,append,assgin,replace等修改函数.
- 对迭代器的潜在错误进行了修复,并对各容器调用迭代器构造函数的错误进行了修复.
- 对hash_table中的hash_node的operator new[]及delete[]函数中的分配器调用错误进行了修复.
- 对algorithm中的replace函数新增了两类关于迭代器范围及初始化列表的重载.
- 修复了各容器中begin()/end()函数在const对象中的返回迭代器类型.
- 修正了error中的错误.