我有一个函数,我提供了一个指向std :: vector的指针。
我想让x = to vector [element]但是我遇到了编译器错误。
我在做:
void Function(std::vector<int> *input)
{
int a;
a = *input[0];
}
这样做的正确方法是什么? 感谢
答案 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)
; - )