Использование 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;