簡體   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