std :: vector的访问元素

时间:2010-06-05 21:43:40

标签: c++ vector

我有一个函数,我提供了一个指向std :: vector的指针。

我想让x = to vector [element]但是我遇到了编译器错误。

我在做:

void Function(std::vector<int> *input)
{
   int a;
   a = *input[0];
}

这样做的正确方法是什么? 感谢

2 个答案:

答案 0 :(得分:8)

应该是:

void Function(std::vector<int> *input)
{
    // note: why split the initialization of a onto a new line?
    int a = (*input)[0]; // this deferences the pointer (resulting in)
                         // a reference to a std::vector<int>), then
                         // calls operator[] on it, returning an int.
}

否则您有*(input[0]),即*(input + 0),即*input。当然,为什么不这样做:

void Function(std::vector<int>& input)
{
    int a = input[0];
}

如果您不修改input,请将其标记为const

void Function(const std::vector<int>& input)
{
    int a = input[0];
}

答案 1 :(得分:1)

你也可以进行一种语法糖饮食并写下a = input->operator[](0); - )