个人关于vector的使用中遇到的问题
我在调用的函数中new了一个vector结构数组,找了很久怎么调用内部结构成员的方法
原来是少了一个括号
struct heapstruct {
vector<Treenode>* val;
int size;
int capacity;
heapstruct(int maxsize) :size(0), capacity(maxsize){}
};
struct Treenode {
int weight;
Treenode* left;
Treenode* right;
Treenode():weight(0),left(NULL),right(NULL){}
};
vector<Treenode>* val = new vector<Treenode>(10);
我没有好好注意这个指针的意义
maxheap H = new heapstruct(maxsize);
(*H->val)[0].weight =10;
定义了一个指针H指向了heapstruct结构,H->val是该结构中的一个指向vector的指针
所以用*H->val解引用后才是vector实例,所以看成一个整体vector[ i ] 应该用(*H->val)[ i ];
int* a = new int[10];
vector<int>* b =new vector<int>(10);
cout << a[0] << b[0];
vector不能像内置类型一样直接用new分配的指针直接用地址索引,以上的a[ 0 ]可以,b[ 0 ]不可以。