所以,我有一个充满整数的向量。让我们调用这个向量Vect
。我的代码位于main.cpp
和VectorList.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
但这不起作用:/任何建议?
答案 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);