内存基本处理工具——全局函数
来源:互联网 发布:员工数据保密协议 编辑:程序博客网 时间:2024/06/05 10:04
STL定义有五个全局函数,作用于未初始化空间上。这样的功能对于容器的实现很有帮助。前两个函数是用于构造的 construct () 和用于折构的 destroy(),另三个函数是 uninitialized_copy(),uninitialized_fill (),uninitialized_fill_n(),分别对应于高层次函数 copy(),fill(),fill_n()——这些都是STL算法。
uninitialized_fill_n
本函数接受三个参数:
● 迭代器 first 指向预初始化空间的初始处。
● n 表示欲初始化空间的大小。
● x 表示初值。
下面是 uninitialized_fill_n 函数的编程实现:
templateinline ForwardIterator uninitialized_fill_n(ForwardIterator first, Size n, const T& x){return uninitialized_fill_n(first,n,x,value_type(first));//以上利用 value_type()取出first的 value_type}template inline ForwardIterator uninitialized_fill_n(ForwardIterator first, Size n, const T& x, T1*){typedef typename _type_traits ::is_POD_type is_POD;return uninitialized_fill_n_aux(first, n, x, is_POD());}//如果是POD型别,执行流程就会转到以下函数template inline ForwardIterator uninitialized_fill_n_aux(ForwardIterator first, Size n, const T& x, _true_type){return fill_n(first,n,x);}//如果不是POD型别,执行流程就会转到以下函数template ForwardIterator uninitialized_fill_n_aux(ForwardIterator first, Size n, const T& x, _false_type){ForwardIterator cur = first;for (; n > 0; --n, ++cur)construct(&*cur,x);return cur;}
uninitialized_copy
接受三个参数:
● 迭代器 first 指向输入端的起始位置。
● 迭代器 last 指向输入端的结束位置(前闭后开区间)。
● 迭代器 result 指向输出端(欲初始化空间)的起始处。
下面是 uninitialized_copy 函数的编程实现:
templateinline ForwardIterator uninitialized_copy(InputIterator first, InputIterator last, ForwardIterator result){return _uninitialized_copy(first, last, result, value_type(result));//以上利用value_type()取出first的value_type}template inline ForwardIterator _uninitialized_copy(InputIterator first, InputIterator last, ForwardIterator result, T*){typedef typename _type_traits ::is_POD_type is_POD;return _uninitialized_copy_aux(first,last,result,is_POD());}//如果是POD型别,执行流程就会转到以下函数template inline ForwardIterator _uninitialized_copy_aux(InputIterator first, InputIterator last, ForwardIterator result, _true_type){return copy(first,last,result);}//如果不是POD型别,执行流程就会转到以下函数template ForwardIterator _uninitialized_copy_aux(InputIterator first, InputIterator last, ForwardIterator result, _false_type){ForwardIterator cur = result;for (; first != last; ++first, ++cur)construct(&*cur,*first);return cur;}
uninitialized_fill
接受三个参数:
● 迭代器 first 指向输出端(欲初始化空间)的起始处。
● 迭代器 last 指向输出端(欲初始化空间)的结束处(前闭后开区间)。
● x 表示初值。
下面是 uninitialized_fill 函数的编程实现:
templateinline void uninitialized_fill(ForwardIterator first,ForwardIterator last,const T& x){ _uninitialized_fill(first, last, x, value_type(first));//以上利用 value_type()取出first的 value_type}template inline void _uninitialized_fill(ForwardIterator first, ForwardIterator last, const T& x, T1*){typedef typename _type_traits ::is_POD_type is_POD;_uninitialized_fill_aux(first, last, x, is_POD());}//如果是POD型别,执行流程就会转到以下函数template inline void _uninitialized_fill_aux(ForwardIterator first, ForwardIterator last, const T& x, _true_type){fill(first, last, x); //调用STL算法fill()}//如果不是POD型别,执行流程就会转到以下函数template void _uninitialized_fill_aux(ForwardIterator first, ForwardIterator last, const T& x, _false_type){ForwardIterator cur = first;for (; cur!=last;++cur)construct(&*cur, x);}
1 0
- 内存基本处理工具——全局函数
- STL — 内存基本处理工具(<stl_uninitialized.h>)
- stl_内存基本处理工具
- 五种内存处理基本工具
- 《stl源码剖析》-- 内存基本处理工具
- STL源码:内存基本处理工具
- STL内存基本处理工具(整理)
- STL内存基本处理工具(stl_uninitialized.h)
- 基本全局阈值处理
- 基本全局阈值处理
- 大内高手—全局内存
- 大内高手—全局内存
- 大内高手—全局内存
- 大内高手—全局内存
- 大内高手—全局内存
- 大内高手—全局内存
- 图像分割—基于图像数据的自动选择阈值(基本全局阈值处理方法)
- STL源码剖析(2):内存基本处理工具
- javascript作用域详解
- 【PSPNet】Pyramid Scene Parsing Network
- Request_irq和setup_irq的区别
- Promise的理解和react等框架的简单理解笔记
- java中的访问修饰符--public、protected、default、private
- 内存基本处理工具——全局函数
- MyBatis配置文件resultMap可省略的情况
- android viewpager 切换动画
- [Nginx]反向代理Node将3000端口访问转换成80端口
- 图论500题
- oracle数据库 锁表 解锁
- Android 命名规范 (提高代码可维护性)
- nodejs中的session
- 如何获取U盘的状态