在队列中实现向量

时间:2014-11-19 06:23:22

标签: c++ class vector

当不需要使用grow函数时,向量显示就好了,但是一旦grow函数被初始化,向量的显示就会变得疯狂,这里是结果

输出:

未初始化增长功能:

[R

C

电子

[R

通过在这种情况下添加另一个元素“E”来初始化Grow函数

[R

[R

#include<iostream>

using namespace std;

class vector{

    public:
        void add(char);
        void display();
        void setSizes();

    private:
        void grow();
        int growthSize;
        int maxSize;
        int currSize=0;
        char * arr;

};


//initializes private variables
void vector::setSizes(){
    growthSize=2;
    maxSize= 7;
    arr = new char[maxSize];
}



//grows the vector
void vector::grow(){
    int *temp = new int[maxSize];
    //Makes copy of array
        for(int i=0;i<maxSize;i++){
            temp[i]=arr[i];
        }

    delete arr;

    int *arr = new int[maxSize+growthSize];
        for(int i= 0; i<maxSize; i++){
        arr[i]= temp[i];
        }

    delete temp;
    maxSize= maxSize + growthSize;
    cout<< "The array grew by " << growthSize << " elements."<< endl;
    }



//adds to the vector
void vector::add(char insert){
    arr[currSize]=insert;
    currSize++;
    if(currSize == maxSize){
        grow();
    }

}



void vector::display(){
    for(int i=0;i<currSize;i++){

        cout<<arr[i]<< endl;

    }

}


 int main(){

    vector bill;
    bill.setSizes();
    bill.add('R');
    bill.add('B');
    bill.add('C');
    bill.add('E');
    bill.add('R');
    bill.add('B');
    bill.add('E');

    bill.display();






}

1 个答案:

答案 0 :(得分:3)

这一行

int *arr = new int[maxSize+growthSize];

在类中隐藏了arr的声明,因此您只需使用局部变量。