我是新手。如何从迭代器访问对象?我有类似的东西:
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
inmyvec
可能会更方便:
for (auto&& str : myvec)
std::cout << str << std::endl;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句