Как мне получить доступ к индексу и объекту из boost :: container :: vector <std :: string> :: iterator? - PullRequest
0 голосов
/ 28 июня 2018

Я повышенный новичок. Как мне получить доступ к объекту из итератора? У меня есть что-то вроде:

boost::container::vector<std::string>::iterator plitr = myvec.begin();
while (plitr != myvec.end()){
    std::cout << "data at index[" << plitr - myvec.begin() << "]: " << plitr->x <<std::endl;
plitr++;
}

Но я понимаю, что plitr->x не существует, и я не уверен, что индекс можно рассчитать так, как я думаю. Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 28 июня 2018

Использование boost::vector идентично std::vector. Следовательно, вычисление индекса работает так, как вы показали, потому что итератор удовлетворяет критериям произвольного доступа. Что касается доступа к объекту, вы хотите разыменовать итератор. Измени свой цикл на

while (plitr != myvec.end()){
    std::cout << "data at index[" << plitr - myvec.begin() << "]: " << *plitr <<std::endl;
    plitr++;
}

и это будет работать (обратите внимание на *plitr, это не разыменовывающая часть). Как примечание: использование диапазона, основанного на цикле, для доступа к каждому std::string в myvec может быть более удобным здесь:

for (auto&& str : myvec)
    std::cout << str << std::endl;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...