uninitialized_copy_n を見落としていたので More STL Algorithm に追記
いちおう、こっちにも書いておく
・uninitialized_copy_n
uninitialized_copy の N 個版. first から n 個を配置 new で初期化する
template<class InputIterator, class Size, class ForwardIterator> inline ForwardIterator uninitialized_copy_n(InputIterator first, Size n, ForwardIterator result) { for (; n > 0; ++result, ++first, --n) { new (static_cast<void*>(&*result)) typename iterator_traits<ForwardIterator>::value_type(*first); } return result; }
#include <iostream> #include <algorithm> #include <memory> using namespace std; class integer { public: integer(int value) : value_(value) {} int get() const { return value_; } private: int value_; }; void disp(const integer& value) { cout << value.get() << endl; } int main() { const int size = 3; int ar[size] = {3, 1, 4}; integer* par = (integer*)malloc(size * sizeof(int)); // uninitialized_copy(ar, ar + size, par); uninitialized_copy_n(ar, size, par); for_each(par, par + size, &disp); // 3, 1, 4 free(par); return 0; }
# uninitialized_copy はじめて使った(知った)