如何通过vector :: pointer在向量中推送数据?

时间:2010-11-12 16:46:41

标签: c++ pointers vector

我想使用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

似乎没有任何工作......任何想法都会受到赞赏..

3 个答案:

答案 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)

在这种情况下ptrint*而不是指向vector<int>的指针,因此它无法执行向量运算。进行作业时:

ptr = &v[0];

您将指针指向包含v [0]处整数的地址,而不是指定向量的引用。要做你想做的事,你需要做以下事情:

int num;
vector<int> v;
vector<int>* ptr;

ptr = &v;

ptr->push_back(num);