Итерация списка std :: list с помощью const_iterator - PullRequest
1 голос
/ 28 января 2010

возможно ли перебирать до конца списка в функции main () с помощью const_iterator? Я пытался использовать 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 ]

5 голосов
/ 28 января 2010

Вы, похоже, «инкапсулировали» список, не раскрывая способ доступа к методу 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 голосов
/ 28 января 2010

Не существует автоматического способа узнать конец списка с помощью итератора. Вам нужна функция, которая возвращает конец списка. Вы можете предоставить что-то вроде const_iterator get_list_end().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...