我正在学习C ++,我遇到了这个函数的问题。我最初传递了整个向量,然后传递了一个指向向量的指针;但是我似乎无法从指向矢量的指针赋值。
void fill(std::vector<int> *vec, const int startVal)
{
const int n = vec->size();
for (int i = 0; i < n; ++i)
{
vec[i] = startVal + i
}
}
如何将指针(vec)的第i个位置的值赋给向量?
我试过了:
vec->[i] = startVal + i;
答案 0 :(得分:8)
好吧,你应该通过引用传递向量:
void fill( std::vector<int> &vec, int startVal )
然后你想要的行是:
vec[i] = startVal + i;
当您使用指针时,您必须取消引用指针,因此:
(*vec)[i] = startVal + i;
答案 1 :(得分:4)
你可以像这样取消引用指针:
(*vec)[i]
或
vec->operator[](i)
但是你可以通过传递参考来使你的生活更轻松,
void fill(std::vector<int>& vec, int startVal)
或调用std::iota
,这是一种标准库算法,可实现容易混淆的fill
函数的功能:
std::vector<int> v = ....;
....
std::iota(v.begin(), v.end(), startVal);