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