列出所有N位数字,并带有[string]位数字

时间:2019-10-05 12:32:53

标签: c++ visual-c++

我需要一个复杂的函数,该函数可以提供自定义数字和数字位数,可以算出这些数字,然后将它们吐出一个数组。

例如:

function("012", 2, &array_of_string[]);

该函数应放入数组:

{"00", "01", "02", "10", "11", "12", "20", "21", "22"}.

您可能会注意到此数组的前面有填充,而不是说“ 1”,而是输出“ 01”。这是必需的,因为使用此数组的另一个函数将需要空格。填充可以通过以下方式生成:

function(string Digits, int DigitNum, &array_of_string[]){
//mystery

array_of_string[current_cell] = string(DigitNum - number.length(), Digits[0]) + number;

//mystery
}

所以我想要的函数只需要生成由某些字符组成的,具有一定基数的特定位数的字符串即可。

这是我希望完成的事情:

function("*&$", 4, &array_of_strings[]);

将输出到array_of_strings []:

{"****","***&","***$","**&*","**&&","**$*","**$&","**$$","*&**","*&*&"... and so forth

谢谢。

1 个答案:

答案 0 :(得分:1)

auto function(const std::string& str, int amount)
{
    std::vector<std::string> swap;
    std::vector<std::string> arr = { "" };

    while (amount--)
    {
        swap.swap(arr);
        arr.clear();
        for(auto& d : swap)
        {
            for (char ch : str)
            {
                auto s = d;
                s += ch;
                arr.push_back(s);
            }
        }
    }

    return arr;
}