繁体   English   中英

如何从boost :: container :: vector访问索引和对象 <std::string> ::迭代者?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM