Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何通过引用传递向量数组? #包括 使用std::vector; 内部主(空) { 向量gr[10]; 功能(gr); }_C++_C++11_C++14 - Fatal编程技术网

C++ 如何通过引用传递向量数组? #包括 使用std::vector; 内部主(空) { 向量gr[10]; 功能(gr); }

C++ 如何通过引用传递向量数组? #包括 使用std::vector; 内部主(空) { 向量gr[10]; 功能(gr); },c++,c++11,c++14,C++,C++11,C++14,我应该如何定义按引用而不是按值调用的函数?对于按引用传递: #include <vector> using std::vector; int main(void) { vector<int> gr[10]; function(gr); } 但是,如果在main函数中使用了std::array,则可以执行以下操作: template< size_t n, class Item > using raw_array_of_ = Item[n]

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

对于按引用传递:

#include <vector>
using std::vector;

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

    function(gr);
}

但是,如果在
main
函数中使用了
std::array
,则可以执行以下操作:

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

void bar( raw_array_of_<10, vector<int>> const& v );
void better(std::array const&v);
但此函数不接受原始数组作为参数,只接受传递引用的
std::array

#include <vector>
using std::vector;

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

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

但是,如果在
main
函数中使用了
std::array
,则可以执行以下操作:

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

void bar( raw_array_of_<10, vector<int>> const& v );
void better(std::array const&v);
但此函数不接受原始数组作为参数,只接受
std::array

自动函数(vector(&gr)[10]){…}
void better( std::array<vector<int>, 10> const& v );
传递一个数组
std::vector

自动函数(vector(&gr)[10]){…}应该是正确的语法

传递一个
std::vector

数组应该是正确的语法,通过引用传递一个十个
int
数组,您将使用:

auto function(vector<int> (&gr)[10]) { ... }
类似地,对于十个
std::vector
s的数组,它将是:

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

也就是说,向量数组是一种不寻常的结构。与原始数组相比,更喜欢
std::array

要通过引用传递一个包含十个
int
s的数组,您可以使用:

auto function(vector<int> (&gr)[10]) { ... }
类似地,对于十个
std::vector
s的数组,它将是:

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


也就是说,向量数组是一种不寻常的结构。与原始数组相比,更喜欢
std::array

与任何其他类型的数组一样。类似于定义引用任何其他类型数组的函数的方式。我尝试将其定义为void函数(vector&gr);但是它给了我一个错误,我试着把它定义为void函数(vector&gr)——首先,你知道你已经声明了一个
vector
数组吗?我问这个问题是因为我看到很多新程序员犯了一个错误,声明了一个向量数组,而不仅仅是
std::vector gr
vector
本身就是一个“数组”——一个动态数组。标题拼写错误:您可能希望通过引用传递一个向量数组。使用
std::array
可能会更简单,就像使用任何其他类型的数组一样。类似于定义引用任何其他类型数组的函数的方式。我尝试将其定义为void函数(vector&gr);但是它给了我一个错误,我试着把它定义为void函数(vector&gr)——首先,你知道你已经声明了一个
vector
数组吗?我问这个问题是因为我看到很多新程序员犯了一个错误,声明了一个向量数组,而不仅仅是
std::vector gr
vector
本身就是一个“数组”——一个动态数组。标题拼写错误:您可能希望通过引用传递一个向量数组。使用
std::array
gr
是一个arrayDone.,,,,,,,,,,,,,,“
gr
是一个arrayDone.,,,,,,,,,,,,,,”在函数中不能不指定“10”吗?@CaesarK:当数组通过引用传递时不能。@CaesarK AFAIK,如果通过引用传递就不可能了。不能不指定“10”吗在函数中?@CaesarK:当数组通过引用传递时不可以。@CaesarK AFAIK,如果通过引用传递,则不可能。