在此上下文T
中是某种类型,并且allocator
是该类型的分配器对象。默认情况下是这样,std::allocator<T>
但这不一定是真的。
我有一大块内存由allocator.allocate(n)
. 我还有一个对象容器con
(T
例如 a std::vector<T>
)。我想用对象初始化那块内存T
。
内存块的位置存储在T* data
.
这两个代码示例总是相同吗?
#include <memory>
// example 1
std::uninitialized_copy(con.begin(), con.end(), data)
// example 2
std::vector<T>::const_iterator in = con.begin();
for (T* out = data; in != con.end(); ++out, ++in) {
allocator.construct(out, *in);
}
而对于这两个?
#include <memory>
T val = T(); // could be any T value
// example 3
std::uninitialized_fill(data, data + n, val)
// example 4
for (T* out = data; out != (data + n); ++out) {
allocator.construct(out, val);
}