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

C++将数组作为参数列表传递给函数,c++,C++,我有一个带有一些值的数组,但我不知道有多少。我希望将每个值作为参数传递,如下所示: char const*[] array = {"foo","bar",.../*some other objects*/}; something(array.somethingThatTurnsThisIntoArguments()); 这可能吗?另外,函数something是不可更改的,因此我无法使用std::vector类型的参数重新编写函数。在这种情况下,您应该更喜欢使用std::vector或std::

我有一个带有一些值的数组,但我不知道有多少。我希望将每个值作为参数传递,如下所示:

char const*[] array = {"foo","bar",.../*some other objects*/};
something(array.somethingThatTurnsThisIntoArguments());
这可能吗?另外,函数something是不可更改的,因此我无法使用std::vector类型的参数重新编写函数。在这种情况下,您应该更喜欢使用std::vector或std::array,其中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 over char*或const char*来处理字符串


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

Nope。使用STD::Vector。你可以要求数组用Null pTR结尾,你可以单独传递这个大小,或者你可以使用一个标准容器,它可以保存诸如STD::Salt.@ NeilButterworth的缺省值,但是什么是向量?@卡姆登,你用C++ C++教科书解释了什么?用卷曲括号{}数组初始化不是方形[]个。此函数内置于c++大小?在std::vector::size还是std::array::size中?是的,这两个函数都是C++标准库的内置函数。不,因为我不能改变参数类型,因为函数是不可改变的。