繁体   English   中英

将向量传递给函数时,默认参数(如果有)应该是什么?

[英]What should the default argument(if any) be while passing a vector to a function?

我已经写了这个程序:

#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;
 }

编译器说:“ void permute()的参数3缺少默认参数,我不知道如何为矢量传递默认值,而我要传递该矢量。请帮助

一旦为一个参数指定了默认值,就必须为以下所有参数指定一个默认值。

因此,只需更改参数的顺序即可:

 void permute(char a[], vector<string> &vs,int i=0){

对于vector<string> &参数,您不能真正传递合理的默认值,而只能传递全局引用等。

只能为函数的最后一组参数指定默认值:

void permute(char a[],int i=0, vector<string> &vs){

在此,为三个参数中的第二个提供默认值。 如果为第二个参数提供了默认值,则也必须为第三个参数提供一个默认值。 具有默认值的参数后不能跟随没有默认值的参数。

但是,在这种情况下,看起来根本不需要默认值,因此只需将其删除即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM