Como posso criar produto cartesiano de vetor de vetores?

Eu tenho um vetor de vetores digamosvector<vector<int> > items de tamanhos diferentes, como se segue

1,2,3
4,5
6,7,8

Quero criar combinações em termos de produto cartesiano desses vetores como

1,4,6
1,4,7
1,4,8
and so on till
3,5,8

Como eu posso fazer isso ? Eu procurei vários links e também os listei no final deste post, mas não sou capaz de interpretar isso, pois não estou familiarizado com o idioma. Algum corpo poderia me ajudar com iss

#include <iostream>
#include <iomanip>
#include <vector>

using namespace std;

int main()
{
    vector<vector<int> > items;
    int k = 0;

    for ( int i = 0; i < 5; i++ ) {
        items.push_back ( vector<int>() );

        for ( int j = 0; j < 5; j++ )
            items[i].push_back ( k++ );
    }

    cartesian ( items ); // I want some function here to do this.
}

Este programa possui vetores de comprimento igual e eu o coloco para facilitar a compreensão da minha estrutura de dados. Será muito útil, mesmo que alguém use outras respostas de outros links e se integre a isso para obter o resultado. Muito obrigad

Casal de links que eu olhei Doi Programa de:program