通过const_iterator迭代std :: list

时间:2010-01-28 05:47:55

标签: c++ stl iterator

是否可以使用const_iterator迭代直到main()函数中列表的末尾?我尝试使用iter-> end()但我无法弄明白。

#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;
}

2 个答案:

答案 0 :(得分:5)

您似乎已“封装”了列表,但没有公开访问列表的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)
{
    //... 
}

答案 1 :(得分:0)

在给定迭代器的情况下,没有自动的方法来知道列表的结尾。您需要一个返回列表末尾的函数。您可以提供类似const_iterator get_list_end()的内容。