[英]How do I access the index & object from a boost::container::vector<std::string>::iterator?
我是新手。 如何从迭代器访问对象? 我有类似的东西:
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循环访问myvec
每个std::string
可能更方便:
for (auto&& str : myvec)
std::cout << str << std::endl;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.