Rekurencja for loopa - dostęp do poszczególnych iteratorów

0

Witam,
chciałbym zrobić funkcję, która będzie zagnieżdżała for loopy wewnątrz for loopa i mieć jednocześnie dostęp do poszczególnych iteratorów.
Próbowałem zrobić coś takiego stosując rekurencję, ale mam wrażenie, że kolejne zagnieżdżone lupy nie aktualizują iteratorów, które się zmieniają w nadrzędnych loopach.
Próbowałem zrobić coś takiego, ale to nie działa tak jak bym sobie tego życzył:

        std::vector<int> it;
        // Tutaj kod, który wypełni wektor "it" danymi

        std::vector<int *> iter;
        for(int i=0; i<it.size(); i++)
        {
            iter.push_back(&it(i));
        }
        
        int sweek = 0;
        int dup=0;
        
        // I tutaj wywoluje funkcje, ktora jest zdefiniowana nastepujaco:
        void matrixRecursion()
        {
            int start = sweek;
            int end = matrix[sweek];

            for(it(start); it(start)<end; it(start)++)
            {
                if(sweek < it.size()-1)
                {
                    sweek++;
                    matrixRecursion();
                }
                else
                {
                    for(int t=0; t<it.size(); t++)
                    {
                        dup += nIndex[*iter[t]];
                    }
                }
            }
        }

Co dokładnie chcę uzyskać? Zakładając, że it.size() jest równe np. 3, chciałbym, aby moja funkcja wykonała taką instrukcję:

    for(int i=0; i<matrix[0]; i++)
    {
        for(int j=0; j<matrix[1]; j++)
        {
            for(int k=0; k<matrix[2]; k++)
            {
                dup += nIndex[i] + nIndex[j] + nIndex[k];
            }
        }
    }
1

Coś w ten deseń:

std::vector<std::size_t> idx(it.size());
int dup = 0;

std::function<void (std::size_t)> sum = [&](std::size_t i) 
{
	std::size_t i2 = i + 1;
	bool last = (i2 == idx.size());

	for(idx[i] = 0; idx[i] < matrix[i]; ++idx[i])
	{
		if(last)
		{
			for(std::size_t j = 0; j <= i; ++j) 
				dup += nIndex[idx[j]];
		}
		else sum(i2);
	}
};

sum(0);

1 użytkowników online, w tym zalogowanych: 0, gości: 1