算法,破坏和copy_construct
问题描述:
我目前正在建立我自己的玩具vector
为乐趣,我想知道是否有像在当前或下一个标准或在提升下面的东西?算法,破坏和copy_construct
template<class T>
void destruct(T* begin, T* end)
{
while (begin != end)
{
begin -> ~T();
++begin;
}
}
template<class T>
T* copy_construct(T* begin, T* end, T* dst)
{
while (begin != end)
{
new(dst) T(*begin);
++begin;
++dst;
}
return dst;
}
答
std::vector
,如果我没有记错的话,适用于不同的物品,其分配的结构和自毁功能,所以你也可以使用粘合剂(如std::tr1::bind
)让std::transform
和/或std::for_each
做的那些。
但是对于复制循环,似乎也有std::uninitialized_copy。
答
向量元素以相反的顺序被破坏。
答
的STL依赖于allocators具有方法construct
和destroy
和其他类似uninitialized_fill
(如在STL容器中默认的模板参数传递),但不是所有的人的范围内工作。分配器,而不是容器,负责提供这些功能。如果你想编写像STL一样的矢量类,你还需要重新分配分配器。
啊,'uninitialized_copy'正是我在找的东西。谢谢! – fredoverflow 2010-05-07 14:00:33