void printAllPermutations(string s)
{
// Sorting String
string temp(s);
sort(temp.begin(), temp.end());
// Print first permutation
cout << temp << endl;
// Finding the total permutations
int total = calculateTotal(temp, temp.length());
for (int i = 1; i < total; i++)
{
nextPermutation(temp);
}
}
int main()
{
string s = "AAB";
printAllPermutations(s);
}
string's'是函数printAllPermutations()的形式参数。我的疑问是:字符串温度如何?当's'也是一个字符串,而'temp'是需要创建的新字符串时写的?
声明
string temp(s);
是direct initialization的temp
。编译器将找到最匹配的构造函数重载,该重载将是string
的复制构造函数。这意味着您实际上是从temp
复制构建s
,它等效于
string temp = s;
这意味着temp
将是s
的副本。
考虑到printAllPermutations
函数按值接受参数s
,您实际上并不需要temp
变量,您可以直接对s
进行操作,因为它将依次是字符串的副本您在呼叫printAllPermutations
时使用的。