我想使用vector :: pointer以便在其中推送数据..
int num;
vector<int> v;
vector<int>::pointer ptr;
ptr = &v[0];
ptr->push_back(num); // fail
ptr.push_back(num); // fail
ptr.push_back(&num); // fail
*ptr.push_back(num); // fail
似乎没有任何工作......任何想法都会受到赞赏..
答案 0 :(得分:4)
你误解了vector::pointer是什么。这是指向向量中元素的指针的类型,而不是指向向量本身的指针。
除此之外,我不清楚为什么你会这样做,因为.
表示法工作得很好并且在每次访问时都会省略指针取消引用。如果您发现自己输入vector<int> *vecPtr = new vector<int>;
,请深呼吸并询问您为什么不能使用RAII。
答案 1 :(得分:1)
你做不到。您需要使用原始矢量对象。
如果您想要一个指向矢量的指针,您可以执行以下操作:
vector<int> v;
vector<int> *pointer = &v;
v.push_back(4);
pointer->push_back(3);
作为评论,代码中vector<int>::pointer
的类型应为int *
。
答案 2 :(得分:1)
在这种情况下ptr
是int*
而不是指向vector<int>
的指针,因此它无法执行向量运算。进行作业时:
ptr = &v[0];
您将指针指向包含v [0]处整数的地址,而不是指定向量的引用。要做你想做的事,你需要做以下事情:
int num;
vector<int> v;
vector<int>* ptr;
ptr = &v;
ptr->push_back(num);