填充vector <int> * </int>

时间:2014-07-15 09:39:43

标签: c++ vector stdvector

我正在学习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;

2 个答案:

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