如何从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循环访问每个std::stringinmyvec可能会更方便:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从std :: vector <char>构造std :: string?

VisualC ++:String ^和std :: vector

如何使用带有std :: vector <token_type>而不是std :: string的boost :: spirit :: qi

删除std :: set <vector <string >> :: iterator的索引处的值

涵盖boost :: trim并接受std :: vector <std :: string>的函数

如何通过Boost Spirit提取std :: string对象

如何在`std::vector<char>`和`std::string`之间进行选择?

如何解决采用std :: string和std :: vector的构造函数之间的歧义

如何使用单个for循环遍历std :: map <string,int>和std :: vector <int>?

复制一个std :: vector到boost :: unordered_map <string,std :: vector <foo >>

将std :: string索引转换为std :: vector中的整数

std :: vector如何处理可变长度的std :: string?

std :: vector和std :: string重新分配策略

如何读取类型为 std::vector<std::vector<boost:any>> 的 boost 变量?

将boost :: container :: boost basic_string转换为std :: string

如何通过索引从std :: vector <>擦除元素?

将std :: vector <std :: vector <std :: string >>转换为std :: vector <std :: vector <double >>

如何访问类型为std :: vector的成员

如何访问 qml 中的 std::vector<enum>?

std :: vector如何破坏其对象?

如何在std :: vector中找到对象?

std :: set和boost :: container :: set之间的区别

如何在C ++ 17中将std :: string转换为std :: vector <std :: byte>?

std :: vector <T> :: insert和std :: move_iterator <T>如何一起工作?

如何管理std :: vector的std :: vector

std :: vector <string>奇怪的行为

std::string 不是 std::vector<char> 吗?

删除std :: vector <std :: string>中的元素

从 Go 中迭代 `std::vector<std::string>`?