使用std:array作为函数的参数

时间:2018-05-13 21:53:14

标签: c++

我在这里看到:http://www.cplusplus.com/doc/tutorial/arrays/ 那 int [N]与C ++中的std::array<int,N>相同。  我想使用这种表示法,以避免将N作为函数的参数传递。

我想要那样的东西

returnedType function(array tab)

而不是

returnedType function(int tab, int N)

但是我不能制作类型数组,因为我必须写array<int,N>并且我事先不知道N. 有人有解决方案吗?

2 个答案:

答案 0 :(得分:1)

如果你事先不知道大小,std :: vector就是你想要的

//function taking vector:
int MyFunc(const std::vector<int>& vec)
{
 //.. do stuff
 return 5;
}


std::vector<int> myvec;
//add somme entries:
myvec.push_back(1);
myvec.push_back(2);
myvec.push_back(3);
//call function:
int res = MyFunc(myvec);

答案 1 :(得分:1)

使function成为函数template ,如下所示:

template <size_t N>
void function(std::array<int, N> arr)
{
    // do something with arr
}

并称之为:

int main()
{
    std::array<int, 3> a;
    function(a);

    std::array<int, 15> b;
    function(b);
}