STL标准库
文章平均质量分 75
swffsdgasdg
dfgdfsgdgsagvxzvzxvxcqwrwrwerza
展开
-
STL源码之实现一个简易的Vector容器
STL源码之实现一个简易的Vector容器 这里需要的基础知识主要是类模板和函数模板,以及一个C++内存分配的技术allocator类,它提供可感知类型的内存分配,这个类支持一个抽象接口,以分配内存并随后使用该内存保存对象。 使用allocator类,首先应用allocator类建立一个allocator对象,然后使用该对象你可以分配内存,释放内存,构造你原创 2014-10-22 17:10:55 · 1008 阅读 · 0 评论 -
在模板定义内部指定类型
在模板定义内部指定类型比如说要写一个函数模板,功能是输出STL里面容器的第一个数。那么就应该把容器的类型传递进去#include#includeusing namespace std;templatevoid p(Parm &c){ typename Parm::iterator it=c.begin(); cout<<*it<<endl;}void main原创 2014-10-20 23:21:33 · 1227 阅读 · 0 评论 -
c++实现一个简单的空间配置器allocator
c++实现一个简单的空间配置器allocator c++中内存分配和对象构造是分开来的,内存的分配类似malloc函数在内存空间开辟一段空间,但是里面不保存任何数据。对象的构造相当于给这段空间复制。 这么做的理由有两点: 在预先分配的内存中构造对象很浪费,可能创建从不使用的对象,当实际使用预先分配的对象时,被使用的对象往往又必须重新原创 2014-10-26 18:16:23 · 3293 阅读 · 1 评论 -
STl-traits编程技巧
STl-traits编程技巧无论是泛型思想或者是STL(标准库)的实际运用,迭代器(iterators)都扮演着重要的作用。STL的中心思想是:将容器和算法分开,彼此独立设计,最后再讲他们融合在一起。容器和算法的泛型设计并不难,使用C++的类模板(class tempalte)和成员模板(function template)就能完成。但要是将两者融合在一起,你还需要掌握一些其他的技巧,原创 2014-11-26 12:56:34 · 1063 阅读 · 0 评论 -
图解STL内存管理的两种边界情况(STL源码剖析补充)
图解STL内存管理的两种边界情况(STL源码剖析补充)第一种情况就是内存池剩余的小字节空间怎么处理,会不会有内存泄露,答案肯定是不会,但是这个过程是怎么处理的,以下的代码已经简化处理,直接放到VS2010里就可以运行#include#includestatic const size_t __ALIGN=8;static const size_t __MAX_B原创 2014-12-04 00:16:58 · 2022 阅读 · 0 评论 -
用vector或者set删除一亿个数里的奇数
如何用vector或者set删除一亿个数里的奇数先说说VECTOR怎么删除指定的元素,因为VECTOR有迭代器失效的问题,一般人都会写这么样的一个函数for(vector::itertor it=a.begin();it!=a.end();){ if(a[i]%2==1) it=a.erase(it); else it++;}这样的函数如果数据量很小的话原创 2015-03-31 01:14:37 · 1420 阅读 · 2 评论