C++ 如何在c++;?

C++ 如何在c++;?,c++,c++11,pointers,C++,C++11,Pointers,我是被介绍给指针的,我很明白。但是我不知道如何使用指针在vector类中存储变量 这是我从我的理解中得到的,但我应该如何完成它呢 class Vector{ int size; int* element; public: vector(int x); int size() const { return size } }; 要完成开始的操作,只需使用new[]操作符分配内存来存储int值: vector(int x) { si

我是被介绍给指针的,我很明白。但是我不知道如何使用指针在vector类中存储变量

这是我从我的理解中得到的,但我应该如何完成它呢

class Vector{
    int size;       
    int* element; 

    public:
    vector(int x); 

    int size() const { return size }
};

要完成开始的操作,只需使用
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的元素

稍后,您需要(这是必须的)释放分配的内存,以通过实现析构函数防止内存泄漏:

~vector()
{
    delete [] element;
}

请注意,您还应该(必须)至少遵循3的规则,以使向量可复制。

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

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";
}

想想你将如何实现你的构造函数,复制构造函数和析构函数。
std::vector
?你可以很容易地搜索这方面的例子。或者向你的老师/教授/助教寻求帮助(这就是他们在那里的目的)。你需要为你的元素动态分配内存。你所拥有的只是一个未初始化的指针。点击链接并找到@user4581301:我提到过;-)你是这么做的。我道歉。
vector()
{
   delete[] element;
}