2

是否可以用于std::fill初始化非 POD 类型的数组?

文档说std::fill用于operator=初始化数组而不是放置副本构造。然而,据我所知,当在未初始化的空间上调用赋值运算符时,它实际上并没有机会释放任何当前内存。

例子:

struct NonPod
{
    std::string myStr;
};

NonPod arr[10];
NonPod prototype;
NonPod * ptr = &arr[0];
std::fill_n(ptr, 10, prototype);
4

1 回答 1

5

您正在std::uninitialized_fill_nmemory标题中寻找,而不是std::fill_nalgorithm标题中寻找。

但是要当心!您的代码没有考虑对齐或填充 - 考虑使用std::alignment_of,或在不可用的平台上使用合适的 boost 替换。

于 2011-03-30T18:55:59.770 回答