In general, you can use recursion:
template <typename Stream, typename Iterator> void generateNumbers(Stream& stream, Iterator begin, Iterator end) { if (end - begin == 7) { for (Iterator p = begin; p < end; p++) { stream << phoneLetters[n[*p]][*p]; } stream << " "; } else { for (*end = 0; *end <= 2; ++*end) generateNumbers(stream,begin,end+1); if (end - begin == 6) stream << std::endl; } }
What you can call using either a buffer vector or a plain old C array (both of sufficient size).
For instance:
std::vector<int> buf(7,0); generateNumbers(std::cout,buf.begin(),buf.begin());
But if your values ββare binary, it is better to answer PBrando .
source share