#include <vector>
using std::vector;
int main(void)
{
vector<int> gr[10];
function(gr);
}
我应该如何定义通过引用而不是按值调用的函数?
答案 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
到原始数组。