2010-01-28 132 views
1

是否可以使用const_iterator迭代直到main()函數中的列表結束?我嘗試使用iter-> end(),但我無法弄清楚。通過const_iterator遍歷std :: list

#include <list> 
#include <string> 
using std::list; 
using std::string; 

class list_return 
{ 
public: 
list <string>::const_iterator get_list() 
{ 
_list.push_back("1"); 
_list.push_back("2"); 
_list.push_back("3"); 
return _list.begin(); 
} 
private: 
list <string> _list; 
}; 

int main() 
{ 
    list_return lr; 

    list <string>::const_iterator iter = lr.get_list(); 

    //here, increment the iterator until end of list 

return 0; 
} 

回答

4

你似乎已經'封裝'了列表而沒有公開訪問列表的end()方法,你需要你的迭代來知道什麼時候完成。如果你添加一個返回_list.end()到你的list_return類(我稱之爲get_list_end)的方法,你可以這樣做:

for (std::list<std::string>::const_iterator iter = lr.get_list(); 
     iter != lr.get_list_end(); 
     ++iter) 
{ 
    //... 
} 
0

有沒有自動的方式知道給定一個迭代器列表的結束。你需要一個返回列表結尾的函數。你可以提供類似於const_iterator get_list_end()的東西。