C++ 在函数中被调用后,下一个置换有不同的结果

C++ 在函数中被调用后,下一个置换有不同的结果,c++,stl,C++,Stl,如果我有: bool shuffle(string s){ return next_permutation(s.begin(), s.end()); } int main(int argc, char* argv[]){ string m = "abcde5"; do { cout << m << endl; } while(shuffle(m)); bool shuffle(字符串s){ 返回下一个置换

如果我有:

bool shuffle(string s){
    return next_permutation(s.begin(), s.end());
}

int main(int argc, char* argv[]){    
        string m = "abcde5";
    do {
        cout << m << endl;
    } while(shuffle(m));
bool shuffle(字符串s){
返回下一个置换(s.begin(),s.end());
}
intmain(intargc,char*argv[]){
字符串m=“abcde5”;
做{
库特
您一遍又一遍地向函数传递相同的字符串,因为您是按值获取字符串,因此不修改传递的参数


您将同一字符串一遍又一遍地传递给函数,因为您是按值获取字符串,因此没有修改传递的参数。

下一个置换是修改字符串以保持当前状态。使用中间函数shuffle可以修改原始字符串的副本。若要解决此问题,请尝试定义shuffle是这样的:

bool shuffle(string &s)

下一步是修改字符串以保持当前状态。使用中间函数shuffle可以修改原始字符串的副本。要解决此问题,请尝试如下定义shuffle:

bool shuffle(string &s)
bool shuffle(string &s)