Простой способ вернуть содержимое итератора и увеличить его

0

Я хочу создать метод, который возвращает токен и увеличивает его.

Я сделал это:

_tokens - это std :: istream_iterator

std::string             getToken()
{
  std::string           result;

  result = *_tokens;
  ++_tokens;
  return result;
}

Как вы можете видеть, это своего рода уродливая причина, я возвращаю копию копии.

Но я не могу вернуть ссылку на результат result result, это локальная переменная.

И я не могу получить ссылку на * _tokens, потому что ++_tokens изменит содержимое.

У вас есть представление, как я могу сделать это лучше?

  • 0
    Ну, вы можете использовать параметр in-reference, если у вас не может быть семантики перемещения. В противном случае вы сможете сделать что-то вроде return *_tokens++; и надеюсь на РВО.
Теги:
iterator
copy
reference

1 ответ

3

Я думаю, вы имеете в виду следующее

std::string             getToken()
{
  return *_tokens++;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню