Код: Выделить всё
template std::vector cartesianProduct(std::vector const& l, size_t n)
{
std::vector result;
if (l.empty())
return result;
auto const total{(size_t)std::pow(l.size(), n)};
result.reserve(total);
for (size_t i = 0; i < total; ++i)
{
std::vector combo(n);
size_t index{i};
for (long j = (long)n - 1; j >= 0; --j)
{
combo[j] = l[index % l.size()];
index /= l.size();
}
result.emplace_back(std::move(combo));
}
return result;
}
Код: Выделить всё
auto const combos{cartesianProduct(new_av, inputTypes.size())};
for (auto const& combo : combos)
{
if (timeout)
break;
//...
}
Код: Выделить всё
for (auto const& combo : cartesianProduct(new_av, inputTypes.size()))
{
if (timeout)
break;
//...
}
Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/798 ... an-product
Мобильная версия