使用String reverse iterator和iterator作为同一类型的对象(C++)

Sid*_*ant 1 c++ string iterator

我试图为迭代器和反向迭代器使用相同的变量.但是,我找不到共同的基类来这样做.我想做这样的事情:

string a;
....
string::iterator i;
if (....)
    i = a.begin();
else
    i = a.rbegin();  //Error
....
Run Code Online (Sandbox Code Playgroud)

有这样做的好方法吗?

Cal*_*eth 5

没有常见的类型std::string::iteratorstd::string::reverse_iterator.

如果要在它们之间进行选择,则需要为每种类型使用不同的功能.最简单的方法是使用模板

例如

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;
}
Run Code Online (Sandbox Code Playgroud)