STL
文章平均质量分 82
0不等于1
这个作者很懒,什么都没留下…
展开
-
C++ BST
BST(Binary Search Tree)二叉搜索树又称二叉查找树或二叉排序树,在二叉搜索树中若任意节点的左子树不空,则左子树上所有节点的值均不大于它的根节点的值;若任意节点的右子树不空,则右子树上所有的节点的值均不小于它的跟节点的值;一个n个节点的二叉树,如果二叉树是平衡的,则n个节点的二叉树的高度为log2(n+1),二叉树的查找效率为O(log2n),如果二叉树完全不平衡,则其深度可达到n,查找效率为O(n),退化为顺序查找。因此为了获得较好的查找性能,就要构造一个平衡的二叉排原创 2022-04-10 21:22:21 · 443 阅读 · 0 评论 -
C++STL RBT
RB红黑树的主要规则:每个节点不是红色就是黑色的;根节点总是黑色的;如果节点是红色的,则它的子节点必须是黑色的;从根节点到叶节点或空子节点的每条路径,必须包含相同数目的黑色节点;红黑树主要通过三总方式对平衡性进行修改,改变节点颜色,左旋和右旋。Stl tree源码//定义节点颜色typedefbool_Rb_tree_Color_type;const_Rb_tree_Color_type _S_rb_tree_red = false;const_R...原创 2022-04-10 21:22:37 · 292 阅读 · 0 评论 -
C++STL set和map
关联式容器setSet作为一个容器是用来存储同一类型数据,在set中每个元素值都唯一,且系统能根据元素的值自动进行排序。内部实现红黑树。定义使用:set<int> s; s.insert(1); s.insert(2); s.insert(1);set源码//默认升序排列template<class_Key, class_Compare __STL_DEPENDENT_DEFAULT_TMPL(less<_Key>),...原创 2022-04-09 18:21:34 · 480 阅读 · 0 评论 -
C++STL Iterator和traits
STL Iterator和traitsSTLIterator1.Iterator定义STL的中心思想在于将数据容器和算法分开,彼此独立设计,然后再用一个粘合剂将其黏再一起,这个粘合剂就是iterator。迭代器是一种智能指针,它针对指针中最常见的内容提领(dereference)和成员访问(member access),这里隐含的一个重要的消息就是迭代器必须包含原生指针,即接待器是原生指针的一种拓展。所以迭代器最重要的就是重载operator*和operator->。2.实现.原创 2022-04-09 18:20:12 · 980 阅读 · 0 评论 -
C++STL 容器
序列式容器Vectorvector的数据安排以及操作方式,与array非常相似,两者的唯一差别就是空间的运用的灵活性。array是静态空间,一旦配置就不能改变。vector是动态空间,随着元素的加入,它的内部机制会自行扩充以容纳新元素。Vector的基类_Vector_basetemplate<class_Tp, class_Alloc>class_Vector_base {public:typedef_Alloc allocator_type;...原创 2022-04-09 18:18:47 · 740 阅读 · 0 评论 -
C++STL algo
SGI STL算法数值算法(Numeric)使用需包含文件<numeric>Accumulate函数功能:计算init和[first,last)内所有元素的总和,需要提供一个初始值init使用:Int ia[5] ={1,2,3,4,5};Vector<int> iv(ia, ia+5);Accumulate(iv.begin(), iv.end(), 0);//15, 0+1+2+3+4+5Accumulate(iv.begin().原创 2022-04-09 18:14:18 · 478 阅读 · 0 评论 -
C++STL functor
仿函数Unary_function用来呈现一元函数的参数类型和返回值类型,其定义非常简单:STL规定,每一个Adaptable Unary Function都应该继承此类别Template <class Arg, class Result>Struct unary_function{Typedef Arg argument_type;Typedef Result result_type;};一旦某个仿函数继承了unary_function,其用户便...原创 2022-04-09 18:09:29 · 933 阅读 · 0 评论 -
C++STL string
Stringtypedef basic_string<char> string;typedef basic_string<wchar_t> wstring;String类是由模板类base_string<classs CharT , class traits, class alloc>实例化生成的一个类,base_string是由string_base继承而来的子类String_base类源码template <class _T...原创 2022-04-09 18:07:26 · 2390 阅读 · 0 评论 -
C++STL排序
STL中的排序函数1.Sort函数功能:对给定的区间所有元素进行排序排序算法:快速排序,堆排序,插入排序快速排序的最优时间复杂度:O(nlogn),最差时间复杂度为:O(n^2)插入排序的最优时间复杂度:O(N),最差时间复杂度为:O(N^2)堆排序的最优时间复杂度为:O(nlogn),最差时间复杂度为:O(nlogn)源码://1.快速排序//2.堆排序//3.插入排序template <class _RandomAccessIter>i原创 2022-04-09 18:04:27 · 1181 阅读 · 0 评论 -
C++STL内存池
一、New delete和std::alloc内存池就是预先分配好,放到进程空间的内存块,用户申请与释放内存其实都是在进程内进行,SGI-STL的alloc遇到小对象时就是基于内存池的。只有当内存池空间不够时,才会再从系统找一块很大的内存。提到new和delete首先会转调用到malloc和free,这个大家应该很熟识了。很多人认为malloc是一个很简单的操作,其实巨复杂,它会执行一个系...原创 2018-12-05 09:37:52 · 2099 阅读 · 0 评论