STL
文章平均质量分 69
最帅的大白哥哥
这个作者很懒,什么都没留下…
展开
-
关于STL 容器当中存放指针的个人理解
首先STL容器中最好是不要存放指针,如果外部被new出来的对象被销毁了,那么存放在容器中的指针就变成空指针了,这样在遍历的时候,就爆炸了。但是在STL容器中存放指针也有他的好处。首先是在容器中放入对象:#include<iostream>#include<vector>using namespace std;class A{public: A() { std::...原创 2018-05-15 14:00:47 · 1792 阅读 · 0 评论 -
STL unique算法
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/unique/unique 算法:移除rang内相邻的连续重复元素。template <class ForwardIterator> ForwardIterator unique (ForwardIt...原创 2018-02-11 11:08:04 · 307 阅读 · 0 评论 -
STL remove_copy_if算法
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/remove/remove_copy_if算法:template <class InputIterator, class OutputIterator, class UnaryPredicate> O...原创 2018-02-11 10:46:18 · 275 阅读 · 0 评论 -
STL remove
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/remove/remove算法:在范围区间内删除值。值得注意的是这个remove算法是STL里面的,和API remove不是同一个东西。template <class ForwardIterator, cla...原创 2018-02-11 10:07:04 · 177 阅读 · 0 评论 -
STL generate算法
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/generate/generate算法:template <class ForwardIterator, class Generator> void generate ( ForwardIterato...原创 2018-02-10 23:21:26 · 951 阅读 · 0 评论 -
STL fill算法
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/fill/fill():在范围区间内填充值。template <class ForwardIterator, class T> void fill (ForwardIterator first, Fo...原创 2018-02-10 23:07:33 · 636 阅读 · 0 评论 -
STL replace_copy算法
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/replace_copy/replace_copy算法:copy一段区间,并且对选定值进行替换template <class InputIterator, class OutputIterator, class...原创 2018-02-10 22:45:19 · 199 阅读 · 0 评论 -
STL replace_if
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/replace_if/replace_if算法:替换区间内的值。template < class ForwardIterator, class UnaryPredicate, class T > vo...原创 2018-02-10 22:21:14 · 223 阅读 · 0 评论 -
STL replace算法
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/replace/replace 算法:替换范围内的值template <class ForwardIterator, class T> void replace (ForwardIterator fi...原创 2018-02-10 21:28:54 · 251 阅读 · 0 评论 -
STL iter_swap
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/iter_swap/iter_swap():交换两个迭代器所指向的值。template <class ForwardIterator1, class ForwardIterator2> void it...原创 2018-02-10 20:24:39 · 252 阅读 · 0 评论 -
STL reverse算法
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/reverse/reverse算法:反转区间。template <class BidirectionalIterator> void reverse (BidirectionalIterator fi...原创 2018-02-11 13:05:17 · 855 阅读 · 0 评论 -
STL rotate
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/rotate/rotate算法:template <class ForwardIterator> void rotate (ForwardIterator first, ForwardIterator...原创 2018-02-11 13:20:14 · 283 阅读 · 0 评论 -
STL all_of算法
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/all_of/all_of算法:测试[first,last)空间中的元素都不符合测试函数的条件,就返回Ture。template<class InputIterator, class UnaryPredicat...原创 2018-02-08 16:02:26 · 475 阅读 · 0 评论 -
STL for_each算法
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/for_each/for_each算法:遍历[first,last)区间里面的每个元素,并且调用function方法。template<class InputIterator, class Function&g...原创 2018-02-08 17:07:35 · 194 阅读 · 0 评论 -
STL none_of算法
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/none_of/none_of 算法:没有元素符合测试条件。如果[first,last)区间里面有元素满足 perd 条件,就返回false,或者区间是empty也会返回false。如果没有元素满足条件就返回ture...原创 2018-02-08 16:46:32 · 331 阅读 · 0 评论 -
STL any_of算法
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/any_of/any_of算法:测试区间范围内个别元素符合测试条件。template<class InputIterator, class UnaryPredicate> bool any_of (I...原创 2018-02-08 16:16:30 · 607 阅读 · 0 评论 -
STL adjacent_find()
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/adjacent_find/adjacent_find()算法:查找相邻且相等的元素。作用:查找一个区间[First,Last)之间是否有相邻且相等的元素。若果有就返回这两个元素中的第一个元素的迭代器对象并且返回,如...原创 2018-02-08 15:52:12 · 198 阅读 · 0 评论 -
STL Find_end算法
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/find_end/find_end():用来进行两个范围空间内有序数据的查找。template ForwardIterator1 find_end (ForwardIterator1 fi原创 2018-02-07 17:22:11 · 466 阅读 · 0 评论 -
STL find_first_of算法
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/find_first_of/template<class InputIterator, class ForwardIterator> InputIterator find_first_of ( Inp...原创 2018-02-13 14:57:04 · 268 阅读 · 0 评论 -
STL 算法Find_if_not+匿名函数
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/find_if_not/Find_if_not 算法(在指定范围内查找一个元素):返回一个[first,last)区间范围内第一个符合查找条件的元素,查找函数的perd返回false的时候满足条件。如原创 2018-02-07 14:41:26 · 658 阅读 · 0 评论 -
STL 算法测试find_if()
本文内容来自C++Plus,本文只是本人的总结和翻译而已。我自是C++的搬运工。Find_if算法,也是一个在指定范围内寻找相对应元素的算法。当在 [first,end)区间里面找到了第一个按指定的条件查找的对象,就返回Ture,如果没有找到的话,就返回Last。template InputIterator find_if (InputIterator first, Input原创 2018-02-07 14:20:11 · 372 阅读 · 0 评论 -
STL 算法测试—find()方法
find()方法在一个范围内查找一个值。返回第一个 在[first,last ) 区间内查找到的相等的值(返回找到的第一个值)。如果没有找到,就返回last。find()方法必须 operator== 用来对指定的值进行比较。template InputIterator find (InputIterator first, InputIterator last, const T原创 2018-02-07 11:40:09 · 988 阅读 · 0 评论 -
STL swap_ranges算法
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/swap_ranges/swap_rangs算法:从First2开始的位置开始和[First1,last1)中的元素开始交换。template<class ForwardIterator1, class For...原创 2018-02-10 20:01:09 · 260 阅读 · 0 评论 -
STL swap算法
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/swap/swap()算法:交换两个对象的值。template <class T> void swap ( T& a, T& b ){ T c(a); a=b; b=c;}源代码就...原创 2018-02-10 19:56:36 · 1304 阅读 · 0 评论 -
STL算法分析之Copy()算法
在看SGI STL源码的时候,毕竟会碰到很多的算法,不理解这些算法对我们的阅读产生了很大的影响,现在先来分析下几个已经碰到的了的算法。第一个Copy()算法。Copy算法说起来很简单就是将迭代器里面的 [first,last]区间里的元素赋值到指定的 result 指定的区间里面去[result,result+(last-first)]。看下函数原型 并且解析下。[cpp]原创 2018-01-22 15:27:42 · 379 阅读 · 0 评论 -
STL之三种New
new一共有三种形式。new operator,operator new ,place new。new operator 相当于new *p=new int; 这种形式的New,他会先申请可用空间,然后在调用构造方法。Operator new 只会分配内存空间,但是不会调用构造方法。string* str=operator new(sizeof(string));place new 是在已有的空原创 2018-01-19 17:01:01 · 644 阅读 · 0 评论 -
STL 源码分析之萃取器
在STL中迭代器控制算法,算法操作容器。但是,泛型编程中算法并不知道迭代器传递给他的是什么样的类型,所以在迭代器和算法之间需要一个东西来分配类型。这东西就是萃取器。这是一种编程的技法。下面上图后直接上模拟的萃取器代码。并且说明原理。 下面上模拟代码。都备注好了。#includeusing namespace std;/原创 2018-01-25 19:55:58 · 330 阅读 · 2 评论 -
STL 基础概述
STL是一套标准,只要实现了套标准就是一个STL,是一套基于泛型程序设计的一套框架,这套框架帮我们实现了基本的容器和算法。STL分为六大组件,容器,算法,迭代器,函数对象,分配器。STL中最基本的三大组件,容器,算法,迭代器。容器是用来存储元素的,算法是用来操作数据的,中间有个迭代器是用来将容器和数据连接起来操作的。迭代器是一个Smart point 里面做了一些类似指针的操作,迭原创 2018-01-07 17:55:33 · 430 阅读 · 0 评论 -
关于成员模板的补充
本文是对之前的成员模板函数进行的补充说明在模板中生成的类都是想对独立的,详细情况如下就相当于做了这种骚操作,显然,传递进去的参数是错误的。。。。 这样怎么进行转换了。。 想要解决这个问题其实很简单,只要写一个成员模板就可以了。 如下这样就可以完成转换。为什么了。如下:假设函数模板是相对于类是独立的,那么在调用的时候就会出现上述情况,这样的话就可以完成原创 2018-01-16 10:27:40 · 207 阅读 · 0 评论 -
STL学习之路-》特化
特化的含义:特化其实就是特殊化。我们先从函数模板的特化开始说,比如template T max(T lHs, T lRs){return lHs > lRs ? lHs : lRs;}int main(){max(1, 2);return 0;}这样调用时没有问题的。接下来template T max(T lHs, T lRs)原创 2018-01-06 14:19:41 · 443 阅读 · 0 评论 -
SGI STL 源码分析(四)Vector构造的过程
/explicit 防止隐式类型转换。并且在参数中拿到一个分配器,用VectorBase里面的分配器来初始化他。 //这里调用的Vector里面的默认构造函数。 explicit vector(const allocator_type& __a = allocator_type()) : _Base(__a) {} //传递进来的是有长度,并且有类型的话,就会调用VectorBase里原创 2018-01-23 16:09:03 · 150 阅读 · 0 评论 -
SGI STL Vector代码剖析(三)
我们接着Vector(二)来继续解析代码。public: iterator begin() { return _M_start; }//这里的iterator这是一个类型指针,这里的意思是返回一个类型指针。 const_iterator begin() const { return _M_start; } iterator end() { return _M_finish; } con原创 2018-01-23 16:06:34 · 193 阅读 · 0 评论 -
SGI STL Insert方法追加分析
在上一篇的分析中, 我们看了Vector Insert方法,但是其中的copy_backward(__position, _M_finish - 2, _M_finish - 1);等算法因为没有做出详解,所以分析的不够透彻,接下来我们继续进行分析。if (_M_finish != _M_end_of_storage) { construct(_M_finish, *(_M_finish -原创 2018-01-23 10:49:44 · 471 阅读 · 0 评论 -
STL count算法
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/count/count算法:计算指定值在范围内的个数。template <class InputIterator, class T> typename iterator_traits<Input...原创 2018-02-08 20:42:37 · 718 阅读 · 0 评论 -
STL cout_if 算法
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/count_if/cout_if :返回满足搜索条件的元素个数。template <class InputIterator, class UnaryPredicate> typename iterat...原创 2018-02-08 20:53:10 · 242 阅读 · 0 评论 -
STL mismatch( )算法
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/mismatch/mismatch算法:返回第一个找到的两个空间中不相同的元素。template <class InputIterator1, class InputIterator2> pair&l...原创 2018-02-08 21:55:34 · 1532 阅读 · 0 评论 -
SGI STL代码剖析之Vector(二)
接着上文,我们继续剖析STL,上一个帖子我们剖析了VcetorBase,这回我们继续来剖析Vector里面的代码Vector是个大类,现在只能从上到下一点点的来分析了。讲解说明都打在注释上了。迭代器这里先略过下,Insert方法就是在指定的位置,插入指定的数据。接下来看Insert里面的实现。这是Size方法里面的实现。现在来看两个很有意原创 2018-01-20 22:43:35 · 230 阅读 · 0 评论 -
STL copy_backward( )算法
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/copy_backward/copy_backward()算法:在一个范围内从后向前copy元素。template<class BidirectionalIterator1, class Bidirection...原创 2018-02-09 21:32:21 · 246 阅读 · 0 评论 -
STL copy_if
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/copy_if/copy_if算法:copy区间范围内的某一个值。template <class InputIterator, class OutputIterator, class UnaryPredicat...原创 2018-02-09 21:20:14 · 432 阅读 · 0 评论 -
STL copy_n算法
本文内容来自C++Plus,本文只是本人的总结和翻译而已。本人只是C++的搬运工。原文传送门:http://www.cplusplus.com/reference/algorithm/copy_n/copy_n算法:copy 元素template<class InputIterator, class Size, class OutputIterator> OutputIterato...原创 2018-02-09 21:09:22 · 1145 阅读 · 0 评论