C ++将数组作为函数的参数列表传递

时间:2018-02-17 23:43:35

标签: c++

我有一个带有一些值的数组,但我不知道有多少值。我想将每个值作为参数传递:

char const*[] array = {"foo","bar",.../*some other objects*/};
something(array.somethingThatTurnsThisIntoArguments());

这可能吗?此外,函数something()是不可更改的,因此我无法使用std::vector

类型的参数重写函数

1 个答案:

答案 0 :(得分:0)

在这种情况下,您应该更喜欢使用std::vector<T>std::array<T,N>,其中T是数据类型,N是指定std::array数组大小的整数。基于你所写的内容,这两个中的任何一个都可以为你工作,尽管前者可以动态地增长和缩小,后者将具有固定的大小。您可以为每个对象列表分配类似于您在问题中的操作,然后将它们作为函数参数传递,而不需要使用正确的函数参数进行任何额外的操作,如下所示:

void somethingToDo(const std::vector<std::string> &vec) {

    //do something with vec
}

// code

std::vector<std::string> v = {"a","b","c"};
somethingToDo(v);

此外,我建议您使用std::string而不是char *const char *来处理字符串。

现在,在问题的第二部分,您可以通过调用每个size()成员函数来获取这些数组类型对象的大小(即它们包含的对象数)。即使您不知道阵列中有多少个对象,这些对象也会为您跟踪它们的大小。然后,您可以在将数组类型传递给的函数中随时查询其大小。