设计一个c++函数,每调用一次从vector中读出下一个字符。解决思路

设计一个c++函数,每调用一次从vector中读出下一个字符。
如在main()中调用;

int main()

{

  getnextchar();

  getnextchar();

  return 0; 

} // 第一次读出1, 第二次调用读出2


有一个能用的解决方案
C/C++ code

#include <iostream>
#include <vector>

using namespace std;

void getnextchar();

int main()
{
    getnextchar();
    getnextchar();
    return 0;
}

void getnextchar()
{
    static vector<char> vec;
    
    vec.push_back('a');
    
    vec.push_back('b');
    
    static int i=0;
    
    cout << vec[i];
    
    i++;
}


还有没更高级点的????

------解决方案--------------------
C/C++ code

#include<vector>
#include<iostream>
template<class T>
struct getnextchar_
{
    typename T::const_iterator i;

    template<class P>
    getnextchar_(const P& c)
        : i(c.cbegin())
    {}

    void operator()()
    {
        std::cout << *i++;
    }
};

static std::vector<char> v{'1', '2'};
static auto getnextchar = getnextchar_<std::vector<char>>(v);

int main()
{
  getnextchar();
  getnextchar();
}