您的位置:首页 > 其它

内存基本处理工具

2016-03-20 21:33 337 查看
STL有5个全局函数作用于未初始化的空间上。

前面提到的construct(),destroy(),uninitialized_copy(),uninitialized_fill(),uninitialized_fill_n()

使用时要包含<memory>

1、uninitialized_copy()

template <class InputIterator, class ForwardIterator>
inline  ForwardIter  uninitialized_copy(InputIterator first, InputIterator last, ForwardIterator result)
{return _uninitialzed_copy(first,last,result,value_type(result));}


然后需要_uninitialzed_copy判断是否是POD类型,如果是则调用copy()函数实现,否则必须用construct函数一个个对象进行构造。

针对char* 和wchar_t*有特化版本,可以采用memmove(直接移动内存内容)

inline char* uninitialized_copy(const char* first,const char* last,char*result)
{
memmove(result,first,last-first);
return result+(last-first);
}


2、uninitialized_fill(),uninitialized_fill_n()

这两个函数无法用底层操作了,它们的特化分别对应fill()和fill_n()函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: