如何设法在c ++中创建矢量类?

时间:2017-10-16 19:47:42

标签: c++ c++11 pointers

我被引入指针,我完全明白了。但我不知道如何使用指针在vector类中存储变量。

以下是我从理解中得到的内容,但我该如何完成呢?

class Vector{
    int size;       
    int* element; 

    public:
    vector(int x); 

    int size() const { return size }
};

2 个答案:

答案 0 :(得分:1)

要完成您的工作,只需使用new[]运算符分配内存即可存储int值:

vector(int x)
{
    size = x;
    element = new int[size]; // this allocates an array of int with a size of "size"
}

然后,您可以使用element[i]访问数组的i元素。

稍后您需要(必须)释放allocatd内存以通过实现析构函数来防止内存泄漏:

~vector()
{
    delete [] element;
}

请注意,您(必须)也应至少遵循3的规则,让您的矢量可以复制。

答案 1 :(得分:1)

首先,您需要定义一个存储当前大小的值 - (向量内的元素数) - 以便能够在向量的末尾添加值。

int curr_vec_size;

另外,矢量的实际大小应保存在变量中,以便在每次添加分配内存不足的值时进行检查

int memory_size;

第二,你需要使用" new"动态分配内存。在构造函数

    vector(int size)
{
    element = new int[size];        //allocating memory (array of integers)
    memory_size= size;              //size of allocated memory
    curr_vec_size= 0;               //no values in the vector 
}

然后你可以创建一个带有int值的方法并将其添加到动态数组中。

    void add_value(int passed_val)
{
    if(curr_vec_size < memory_size)
    {
        element[curr_vec_size]=passed_val;    //adding the value in the vector
        curr_vec_size ++;                     //because you have added a new value
    }
    else 
        cout<<"vector is full \n";
}

最后,不要忘记使用删除指向此分配内存的指针的析构函数删除已分配的内存。

vector()
{
   delete[] element;
}