如何通过引用传递一组向量?

时间:2018-01-27 21:48:42

标签: c++ c++11 c++14

#include <vector>
using std::vector;

int main(void)
{
    vector<int> gr[10];

    function(gr);
}

我应该如何定义通过引用而不是按值调用的函数?

3 个答案:

答案 0 :(得分:4)

auto function(vector<int> (&gr)[10]) { ... }

传递std::vector<int> by reference的数组应该是正确的语法。

答案 1 :(得分:3)

以参考方式传递:

void foo( vector<int> const (&v)[10] )

如果const要修改实际参数,则无法foo

为了避免声明的内部原始C语法问题,您可以这样做:

template< size_t n, class Item >
using raw_array_of_ = Item[n];

void bar( raw_array_of_<10, vector<int>> const& v );

但是,如果您在std::array函数中使用过main,则可以这样做:

void better( std::array<vector<int>, 10> const& v );

但是这个函数不接受原始数组作为参数,只接受std::array

答案 2 :(得分:1)

要通过引用传递十个int的数组,您将使用:

void foo(int (&gr)[10]);

同样,对于十个std::vector的数组,它将是:

void foo(std::vector<int> (&gr)[10]);

据说一组向量是一些不寻常的结构。首选std::array到原始数组。