C++ 参数个数可变的函数

C++ 参数个数可变的函数,c++,C++,我的程序中有一个函数,可以计算给定目录中的文件数。该函数将输入参数作为目录名和必须计入目录的文件名类型的扩展名 我想让它成为通用的,这样函数的调用者可以指定任意数量的文件扩展名,这些扩展名可以作为输入参数,然后计算具有这些扩展名的特定文件 void getNames(string dirName, string fileExtension1, string fileExtension2, string fileExtension3){ vector<string> fileNam

我的程序中有一个函数,可以计算给定目录中的文件数。该函数将输入参数作为目录名和必须计入目录的文件名类型的扩展名

我想让它成为通用的,这样函数的调用者可以指定任意数量的文件扩展名,这些扩展名可以作为输入参数,然后计算具有这些扩展名的特定文件

void getNames(string dirName,  string fileExtension1, string fileExtension2, string fileExtension3){

vector<string> fileNames = //do some operations

if(fileType == fileExtension1 || fileType==fileExtension2....){
//increase count
}

return fileNames;
}

如何更改此函数,使其接受任意数量的参数,然后在函数中使用相同的参数来计算文件数?

最简单的方法是传入扩展向量

void getNames(string dirName, const vector<string>& fileExtensions)

在代码中,您有基于类型的决策:

if(fileType == fileExtension1 || fileType==fileExtension2....){
//increase count
}

return fileNames;
}
如果您将有许多文件类型和函数在其上运行,那么每次您都需要一些特定于文件类型的操作,如果您是这种类型,那么您将得到广泛的基于类型的决策逻辑,如果您是这种类型,那么就这样做,否则如果您是


由于函数是基于文件类型扩展的文件名,所以您可能会考虑将两者封装到类文件中,因为每个文件都有名称和扩展名。然后,您的函数将在一组文件对象上运行。如果文件对象集是您在许多地方正在处理的对象,那么您可以定义一个类,例如FileSet,然后可以使用向量、列表或任何存储文件的容器来实现该类。这样,您将得到一个只接受一个参数的函数,例如constfileset&,其余代码将由File类处理。无论如何,这不是一个确定的答案,我只建议考虑代码的OO设计

您可能希望通过引用传递向量使该常量向量&
if(fileType == fileExtension1 || fileType==fileExtension2....){
//increase count
}

return fileNames;
}