加倍T项的数组大小

时间:2015-05-16 06:18:06

标签: c++ arrays dynamic allocation

我在这里创建自己的矢量类(用于作业):

private:
T *items;
int used;

Vector() {
    used = 0;
    items = new T[1000];
};

当我构造向量并使用:

std::cout<<sizeof(items)/sizeof(T);

它始终返回1,无论我在构造函数中创建项目的大小(我已经尝试过1000,4,1,0,-1)它总是cout的1.我也尝试在数组达到1000时加倍,然后2000然后4000等。

        if(used == sizeof(items)/sizeof(items[0])) {
        T *tempItems = new T [used];
        memcpy(items, tempItems, sizeof(items));
        delete []items;
        T* items = new T[used*2];

        memcpy(tempItems, items, sizeof(items));

        delete []tempItems;
        }

当我尝试打印项目的内容时,它会抛出无效的读取。这可能是由于先前的问题。我不能回到使用向量,这是作业的重点。

0 个答案:

没有答案