小编Hel*_* CS的帖子

c ++问题:在为变量赋值后,另一个变量发生了变化

下面的代码是我自己的索引先前队列的API.当我测试插入函数时,我得到了错误的答案.然后我调试代码,我发现数组qp的值在执行句子后改变了---- item[k]=v这是插入函数.为什么在为数组赋值后,数组qp的值是否更改?

template <class T>
class IndexPriorQueue{
private:
    int index;//the num of items
    int size;//capacity
    int* pq;//index binaryheap
    int* qp;//qp[pq[i]]=pq[qp[i]]=i
    T* item;//item array;
public:
    IndexPriorQueue(int qsize){//constructor function
        size=qsize;
        index=0;
        pq=new int(size+1);
        qp=new int(size+1);
        item=new T(size+1);
        for(int i=0;i<size+1;i++)
            qp[i]=-1;

    }
    void insert(int k,T v){
        if(contain(k)){
            cout<<"index is already in queue"<<endl;
            return;
        }
        //cout<<"insert"<<endl;
        item[k]=v;//debug,after excuting this sentence,the value of qp exchanged??
        pq[++index]=k;
        qp[k]=index;
        swim(index);
    }
    bool contain(int k){
        return qp[k]!=-1?1:0;
    }
    void swim(int j){ …
Run Code Online (Sandbox Code Playgroud)

c++ pointers

2
推荐指数
1
解决办法
54
查看次数

标签 统计

c++ ×1

pointers ×1