Используйте обратный итератор String и итератор как объект одного типа (C ++) - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь использовать одну и ту же переменную для итератора и обратного итератора. Однако я не могу найти общий базовый класс для этого. Я хочу сделать что-то вроде этого:

string a;
....
string::iterator i;
if (....)
    i = a.begin();
else
    i = a.rbegin();  //Error
....

Есть ли хороший способ сделать это?

1 Ответ

0 голосов
/ 30 апреля 2018

Не существует общего типа для std::string::iterator и std::string::reverse_iterator.

Если вы хотите выбрать между ними, вам нужно будет иметь разные функции для каждого типа. Самый простой способ сделать это с помощью шаблона

1007 * Е.Г. *

template <typename Iterator>
void do_stuff(Iterator begin, Iterator end)
{
    ...
}

int main()
{
    string a;
    if (...)
        do_stuff(a.begin(), a.end());
    else
        do_stuff(a.rbegin(), a.rend());
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...