Vermeiden Sie verschachtelte for-Schleifen beim Durchsuchen des Parameterraums

Beim Schreiben von Unit-Tests möchte ich häufig eine Funktion mit einer Kombination von Parametern aufrufen. Zum Beispiel habe ich eine Funktion, die als deklariert ist

void tester_func(int p1, double p2, std::string const& p3);

und einige ausgewählte Parameter

std::vector<int> vec_p1 = { 1, 2, 666 };
std::vector<double> vec_p2 = { 3.14159, 0.0001 };
std::vector<std::string> vec_p3 = { "Method_Smart", "Method_Silly" };

Was ich derzeit mache, ist einfach

for(auto const& p1 : vec_p1)
    for(auto const& p2 : vec_p2)
        for(auto const& p3 : vec_p3)
            tester_func(p1, p2, p3);

Jedoch,Sean Parent Schlägt vor, explizite Schleifen zu vermeiden und zu verwendenstd:: Algorithmen statt. Wie kann man diesen Rat im oben genannten Fall befolgen? Irgendwelche Redewendungen? Was ist der sauberste Weg, um eine Variadic-Vorlage zu schreiben, die dies tut? Was ist der beste Wegohne C ++ 11 Funktionen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage