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

Cae*_*arK 1 c++ c++11 c++14

#include <vector>
using std::vector;

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

    function(gr);
}
Run Code Online (Sandbox Code Playgroud)

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

Che*_*Alf 5

对于通过引用:

void foo( vector<int> const (&v)[10] )
Run Code Online (Sandbox Code Playgroud)

或者 sansconst如果foo要修改实际参数。


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

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

void bar( raw_array_of_<10, vector<int>> const& v );
Run Code Online (Sandbox Code Playgroud)

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

void better( std::array<vector<int>, 10> const& v );
Run Code Online (Sandbox Code Playgroud)

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


Edg*_*jān 5

auto function(vector<int> (&gr)[10]) { ... }
Run Code Online (Sandbox Code Playgroud)

std::vector<int> 通过引用传递数组应该是正确的语法。

  • @CaesarK:当数组通过引用传递时不是。 (2认同)