STL
文章平均质量分 76
Vincent乐
计算机视觉、机器学习、深度学习
展开
-
ptr_fun详解
ptr_fun是将一个普通的函数适配成一个functor,添加上argument type和result type等类型, 其实现如下(例子里面是binary_function,unary_function同理):template<class _Arg1, class _Arg2, class _Result> inline pointer_to_转载 2013-01-02 17:00:30 · 14178 阅读 · 0 评论 -
STL函数对象及函数对象适配器
一 函数对象Functor函数对象是重载了函数调用操作符的类的对象。因为这个对象重载了函数调用操作符,所以你可以像调用函数一样使用这个对象。#include using namespace std;class A {public: int operator() (int x,int y) { return x>y?x:y; }};voi转载 2013-08-18 17:14:58 · 9644 阅读 · 0 评论 -
三十分钟掌握STL
这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。译者:karycontact:karymay@163.netSTL概述STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离转载 2013-01-02 16:16:09 · 1822 阅读 · 0 评论 -
vector内存释放机制
vector 中的内建有内存管理,当 vector 离开它的生存期的时候,它的析构函数会把 vector 中的元素销毁,并释放它们所占用的空间,所以用 vector 一般不用显式释放 —— 不过,如果你 vector 中存放的是指针,那么当 vector 销毁时,那些指针指向的对象不会被销毁,那些内存不会被释放。vector的工作原理是系统预先分配一块CAPACITY大小的空间,当插入的数转载 2013-09-26 09:28:02 · 4879 阅读 · 0 评论 -
STL算法简介
STL算法概述简介:STL算法部分主要由头文件,,组成。要使用 STL中的算法函数必须包含头文件,对于数值算法须包含,中则定义了一些模板类,用来声明函数对象注意:编译器无法检测出所传递的迭代器是一个无效形式的迭代器,当然也无法给出算法函数错误的提示,因为迭代器并不是真实的类别,它只是传递给函数模板的一种参数格式而已STL中算法分类:操作对象直接改变容器的内容原创 2013-08-18 16:08:03 · 9500 阅读 · 0 评论 -
c++ STL 容器
STL源码分析(一)vector容器vector的数据安排以及操作方式,与array非常相似。两者的唯一区别在于空间的运用的灵活性。array是静态空间,一旦配置了就不能改变。vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。因此,vector的运用对于内存的合理利用与运用的灵活性有很大的帮助,我们再也不必因为害怕空间不足而一开始要求一个大块的array。转载 2013-08-17 23:21:39 · 9332 阅读 · 0 评论 -
STL heap堆
STL 中与heap 有关的操作有 如下几个 :make_heap(), pop_heap(), push_heap(), sort_heap(), is_heap; is_heap() :原型如下 :1.bool is_heap(iterator start, iterator end);->判断迭代器[start, end] 区间类的元素是否原创 2013-08-17 23:01:39 · 3236 阅读 · 0 评论 -
算法 <algorithm>中各种算法解析
一,巡防算法for_each(容器起始地址,容器结束地址,要执行的方法)[html] view plaincopyprint?#include iostream>#include algorithm>#include vector>using namespace std; templateclass T>struct plus2 { vo转载 2013-08-18 17:17:10 · 3076 阅读 · 0 评论 -
STL中mem_fun和mem_fun_ref的用法 收藏
怎么对容器中的所有对象都进行同一个操作?我们可能首先想到的是用循环来实现。比如有如下的一个类:class ClxECS{public:int DoSomething() { // 这里以输出一句话来代替具体的操作cout return 0; };};现在定义如下一个vector:vector vECS;for(int i = 0; i转载 2013-01-02 17:29:21 · 13502 阅读 · 0 评论 -
C++类模版详解
有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同,如下面语句声明了一个类:class Compare_int{public :Compare(int a,int b){x=a;y=b;}int max( ){return (x>y)?x:y;}int min( ){return (xprivate :int x,y;}转载 2013-01-02 17:54:47 · 13792 阅读 · 0 评论 -
使用reserve来避免不必要的重新分配
关于STL容器,只要你不超过它们的最大大小,它们就可以自动增长以满足你的要求。对于vector和string,只要需要更多的空间,就可以用realloc等价思想来增长。这个操作有四个部分。1. 分配新的内存块,在大部分实现中,vector和string的容量每次以2为因数增长。2. 把所有元素从容器的就内存拷贝到它新的内存。3. 销毁就内存中的对象。4. 回收就内存。给了所有的转载 2013-01-01 11:07:53 · 13594 阅读 · 0 评论 -
STL 函数对象
一 函数对象(Functor)STL中提供了一元和二元函数的两种Functor,通过unary_function和binary_function提供了这两种不同参数数量的Functor的基本结构,在这两个类型中,分别内嵌定义一元和二元函数操作在模版推演的时候需要用到的typedef.//一元函数的定义为templatestruct unary_function {t转载 2013-01-02 16:18:51 · 13803 阅读 · 0 评论 -
STL 函数适配器
先来看一个小程序:bool check(int elem);vecotv; ...pos=find_if(v.begin(),v.end(),not1(check))竟然出错,查找资料之后,发现,原来原因如下:ptr_fun做的唯一的事是使一些typedef有效( 仿函数类的operator()所带的参数的类型和它的返回类型。对于binary_function,你要指定三个类型:你原创 2013-01-02 17:19:15 · 13938 阅读 · 0 评论