ich dieses Programm geschrieben haben:Was sollte das Standardargument (falls vorhanden) sein, wenn ein Vektor an eine Funktion übergeben wird?
#include<iostream>
#include<vector>
#include<algorithm>
#include<cstring>
using namespace std;
void permute(char a[],int i=0, vector<string> &vs){
if(a[i]=='\0'){
//cout<<a<<endl;
string s(a);
vs.push_back(s);
return;
}
for(int j=i;a[j]!='\0';j++){
swap(a[i],a[j]);
permute(a,i+1,vs);
swap(a[i],a[j]);
}
}
int main()
{
char a[25] ;
cin>>a;
vector<string> vs;
permute (a,0,vs) ;
sort(vs.begin(),vs.end());
for(int j=0;j<vs.size();j++)
{
cout<<vs[j]<<endl;
}
return 0;
}
Die complier sagt „Standardargument 3 void permute für Parameter fehlt() Ich weiß nicht, wie man einen Standardwert auf den Vektor geben vs, dass ich vorbei bin. Bitte helfen
Wenn Sie die Argumentreihenfolge so ändern, dass 'vs' vor' i' steht (was * einen * hat), müssen Sie keinen Standard für 'vs' definieren. –
Das Problem ist, dass Ihr 'std :: vector' Argument nach einem Argument mit einem Standardwert (in Ihrem Fall 'int i = 0'). Sobald ein Argument einen Standardwert hat, benötigen alle folgenden Argumente ebenfalls einen Standardwert. In Ihrem Fall könnten Sie auch einfach den leeren Vektor (d. H. '{}') Als Standard verwenden. – Corristo
@Corristo _ "Sie könnten auch einfach den leeren Vektor verwenden (d. H. {})" _ Nein, das funktioniert nicht mit einem Referenzparameter. –