from <stl_uninitialized>
1.1 uninitialized_copy()
template <class InputIterator, class ForwardIterator>
ForwardIterator uninitialized_copy(InputIterator first, InputIterator last, ForwardIterator result);
uninitialized_copy()使我们能够将内存的配置与对象的构造行为分离开来。如果作为输出目的地的[result,result+(last-first))范围内的每一个迭代器都指向未初始化区域,则uninitialized_copy()会使用copy constructor(),给身为输入源之[first,last)范围内的每一个对象产生一份复制品,放进输入范围中。换句话说,针对输出范围内的每一个迭代器i,该函数会调用construct(&*(result+(i-first)),i),产生i的复制品,放置于输出范围的相对位置上。
c++标准规格书要求uninitialized_copy()具有"commit or rollback"语意,要么“构造出所有必要元素”,要么“不构造任何东西”。
1.2 uninitialized_fill()
template <class ForwardIterator, class T>
void uninitialized_fill(ForwardIterator first, ForwardIterator last, const T& x);
uninitialized_fill()也能够使我们将内存配置和对象的构造行为分离开来。如果[first,last)范围内的每个迭代器都指向未初始化的内存,那么uninitial

本文介绍了C++ STL中用于处理未初始化内存的三个工具:uninitialized_copy()、uninitialized_fill()和uninitialized_fill_n()。这些函数分离了内存配置与对象构造,遵循“commit or rollback”语意,用于在未初始化的内存区域创建对象的副本。uninitialized_copy()通过copy constructor复制源对象,uninitialized_fill()和uninitialized_fill_n()则用于填充相同值的对象。
最低0.47元/天 解锁文章
4万+

被折叠的 条评论
为什么被折叠?



