我目前正在建造自己的玩具 vector 为了娱乐,我想知道当前或下一个标准中的以下内容还是在Boost中有类似的内容?

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, ,如果我没记错的话,将其分配器的构造和破坏功能应用于单个项目,因此您也可以使用Binders(例如 std::tr1::bind) 使...能够 std::transform 和/或 std::for_each 做这些。

但是对于复制循环,似乎也有 std :: unitialized_copy.

其他提示

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

STL依靠 分配者 (以STL容器中的默认模板参数传递)具有方法 constructdestroy 和其他人喜欢 uninitialized_fill, ,但并非所有人都在范围内运行。分配器而不是容器负责提供这些功能。如果您想像STL一样编写自己的向量类,则还需要重新发明分配器。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top