Элемент доступа из указанного std :: vector - PullRequest
0 голосов
/ 06 июня 2010

У меня есть функция, в которой я предоставляю указатель на std :: vector.

Я хочу сделать x = для вектора [элемента], но я получаю ошибки компилятора.

Я делаю:

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

Как правильно это сделать? Спасибо

Ответы [ 2 ]

8 голосов
/ 06 июня 2010

Должно быть:

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 голос
/ 06 июня 2010

Вы также можете пойти на синтаксическую сахарную диету и написать a = input->operator[](0); -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...