Escrever um iterador que faz com que vários contêineres pareçam

Considere o seguinte exemplo simplificado e a saída desejada:

class A
{
    class combined_iterator
    {
        ????
    }
    typedef ??? t_combined_it;

    t_combined_it begin();
    t_combined_it end();

    std::vector<int> m_Vec1, m_Vect2;
}

A a;
a.m_Vec1.push_back(1);
a.m_Vec2.push_back(2);
for (A::t_combined_it it = a.begin() ; it != a.end() ; it++) {
     std::cout << *it << " ";
}

Resultado

1 2 

Acho que a pergunta fica clara com isso: como escrevo um iterador que faz parecer que dois ou mais outros iteradores são realmente apenas uma sequência. Para que, no exemplo, em vez da iteração sobre m_Vec1 e m_Vec2, eu possa usar um iterador que itere primeiro os elementos de m_Vec1 e depois m_Vec2, de forma transparent

Encontrei a seguinte pergunta, que acho que faz o mesmo: Crie um iterador c ++ que atravesse 2 contêineres. Não houve boas respostas para essa pergunta; a solução apresentada pelo solicitante original parece complicada e consome (relativamente) muita memória.

Eu tentei uma abordagem ingênua mantendo um std :: vector :: iterator como membro do meu iterador personalizado e comparando-o com os iteradores .end () de cada uma das sequências que foram iteradas; no entanto, parece ilegal comparar iteradores de contêineres diferentes (onde eu preferiria que eles retornassem 'não iguais' - talvez essa seja uma direção para encontrar a solução para esse problema? Não consigo pensar em como para implementá-lo

Sempre que possível e se relevante, eu gostaria de usar o boost :: iterators como os utilizo em outros lugares e gosto da homogeneidade que ela fornece às implementações do meu iterador; mas é claro que se alguém tiver uma idéia sem usá-la, eu posso trabalhar com ela mesma, para que não seja necessária nesse sentid

questionAnswers(6)

yourAnswerToTheQuestion