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,如果通过引用传递,则不可能。