算法,破坏和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

+0

啊,'uninitialized_copy'正是我在找的东西。谢谢! – fredoverflow 2010-05-07 14:00:33

向量元素以相反的顺序被破坏。

的STL依赖于allocators具有方法constructdestroy和其他类似uninitialized_fill(如在STL容器中默认的模板参数传递),但不是所有的人的范围内工作。分配器,而不是容器,负责提供这些功能。如果你想编写像STL一样的矢量类,你还需要重新分配分配器。