破坏和copy_construct的算法
-
04-10-2019 - |
题
我目前正在建造自己的玩具 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容器中的默认模板参数传递)具有方法 construct
和 destroy
和其他人喜欢 uninitialized_fill
, ,但并非所有人都在范围内运行。分配器而不是容器负责提供这些功能。如果您想像STL一样编写自己的向量类,则还需要重新发明分配器。
不隶属于 StackOverflow