Почему я не могу назначить итератор со значениями индекса вектора? - PullRequest
0 голосов
/ 19 сентября 2019

Пример кода

std::vector<int> testvectr;
std::vector<int>::iterator it;
testvectr.push_back(10);
it = testvectr.begin(); // method 1 - works 
it = &(testvectr[0]); //  method 2  - errors as  binary '=': no operator found which takes a right-hand operand of type '_Ty *'

Почему возникает ошибка?Я пытаюсь назначить векторный индекс.Так что позже я могу назвать это * этим.Но я не понял ошибки, стоящей за этим.Просьба помочь.

1 Ответ

1 голос
/ 19 сентября 2019

std::vector<T>::iterator не обязательно T *.Если у вас есть указатель p на элемент вектора и вы хотите получить итератор для этого же элемента, вы можете использовать следующую арифметику указателей:

auto it = v.begin() + (p - v.data());
...