我是新手。
如何从迭代器访问对象?我有类似的东西:

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不存在,也不确定是否可以按照我的想法计算索引。
有人可以帮忙吗?

最佳答案

boost::vector的用法与std::vector相同。因此计算索引的方式与您显示的方式相同,因为迭代器满足随机访问条件。关于对对象的访问,您想取消对迭代器的引用。将循环更改为

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


它将起作用(请注意*plitr,而不是取消引用的部分)。就像一个旁注,使用基于范围的for循环访问std::string中的每个myvec在这里可能更方便:

for (auto&& str : myvec)
    std::cout << str << std::endl;

10-06 05:07