C ++使用指针修改向量

时间:2011-12-02 02:44:32

标签: c++ pointers vector

所以,我有一个充满整数的向量。让我们调用这个向量Vect。我的代码位于main.cppVectorList.h,无法改变这一事实。在VectorList.h我的一个职能是:

void insertAtFront( const int & );

现在我遇到了麻烦,我知道我可以使用std::vector.insert()函数将整数添加到向量的开头。但是,insertAtFront无法访问向量本身,但是,这是VectorList.h中唯一的数据成员:

vector< int > *vList

所以,我的问题是如何仅使用此指针Vect将值添加到向量*vList的开头?

我的第一个想法是这样的:

&vList.insert(&vList.begin(), 1, &value)    // with value being the input integer

但这不起作用:/任何建议?

2 个答案:

答案 0 :(得分:3)

如果你有一个指向矢量的指针,那么你需要使用->运算符。在这种情况下,使用&运算符将为您提供vList.begin()的返回值的地址。考虑到你不能在指针上使用.运算符,这将无法正常工作。相反,您需要取消引用指针。尝试:

vList->insert(vList->begin(), value);

编辑:我不确定为什么在这种情况下你需要中间参数。你应该好好省略它。我在这里写的代码行中已经这样做了。

答案 1 :(得分:2)

假设指针指向有效的vector,只需取消引用向量并调用insert

vList->insert(vList->begin(), value);
// same thing as: (*vList).insert(vList->begin(), value);
// same thing as: (*vList).insert((*vList).begin(), value);
// same thing as: vList->insert((*vList).begin(), value);