初始化模板阵列

时间:2011-10-11 12:16:29

标签: c++ stl vector constructor initialization

我正在尝试模仿矢量STL类。我的构造函数调用以下函数,它将在堆上为它分配一些内存。我想初始化每个对象,无论它们是基元还是对象。我不确定实现此目的的语法。我只想调用默认构造函数。带有T(storage[i]);的行显示了该位置。

        void init_vector(uint reserve)
        {
            if (reserve == 0) reserve=1;
            _size = 0;

            storage = (T*)malloc(sizeof(T)*reserve);
            if (storage == NULL)
            {
                assert(false);
            }

            for (uint i=0; i<reserve; i++)
            {
                T(storage[i]); ???
            }
            _reserved = reserve;
        }

1 个答案:

答案 0 :(得分:1)

您可以使用placement new

new (&storage[i]) T;