我需要一个复杂的函数,该函数可以提供自定义数字和数字位数,可以算出这些数字,然后将它们吐出一个数组。
例如:
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
谢谢。
答案 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;
}