C++ 如何使用按引用传递C+将2D向量传递给函数+; struct-st { 整数到,成本; }; 虚无乐趣(矢量和v1[10]) { 向量v2[10]; v1=v2; } int main() { 矢量阵列[10]; 乐趣(arr); }

C++ 如何使用按引用传递C+将2D向量传递给函数+; struct-st { 整数到,成本; }; 虚无乐趣(矢量和v1[10]) { 向量v2[10]; v1=v2; } int main() { 矢量阵列[10]; 乐趣(arr); },c++,function,structure,2d-vector,C++,Function,Structure,2d Vector,我想通过引用在函数中传递一个2D向量,并将该向量与该函数中的另一个向量交换。但是我犯了一个错误。我不想用对向量来做。我想在这里使用结构。怎么做 一个主要问题是:当作为参数传递数组时,真正传递的是指针 可以使用以下替代方法轻松解决此问题: 你有一个10个向量的数组。你为什么混合这些类型?为什么不是一个std::vector?直接的错误是vector&v1[10]是一个引用数组。对数组的引用看起来像向量(&v1)[10]。所有这些都可以通过首先不使用C样式数组来避免。我同意@CoryKramer的观

我想通过引用在函数中传递一个2D向量,并将该向量与该函数中的另一个向量交换。但是我犯了一个错误。我不想用对向量来做。我想在这里使用结构。怎么做


一个主要问题是:当作为参数传递数组时,真正传递的是指针

可以使用以下替代方法轻松解决此问题:


你有一个10个向量的数组。你为什么混合这些类型?为什么不是一个
std::vector
?直接的错误是
vector&v1[10]
是一个引用数组。对数组的引用看起来像
向量(&v1)[10]
。所有这些都可以通过首先不使用C样式数组来避免。我同意@CoryKramer的观点:你在这里介绍的名义上不是一个“2D向量”,而是一个杂种:一个由1D向量组成的1D数组(逻辑上是一个2D数据结构)。如果函数需要,数组只能作为指针传递。如果函数需要对数组的引用,则传递该引用。例如,按照Bo Persson的建议,OP的代码带有正确的括号。@PeterA.Schneider True,但是我们有赋值问题
v1=v2
。无法指定C样式数组
std::array
也解决了这个问题。
struct st
{
    int to, cost;
};

void fun(vector<st>&v1[10])
{
    vector<st>v2[10];
    v1=v2;
}

int main()
{
    vector<st>arr[10];
    fun(arr);
}
void fun(std::array<std::vector<st>, 10>& v1)
{
    std::array<std::vector<st>, 10> v2;
    // Initialize v2...
    v1 = v2;
}

int main()
{
    std::array<std::vector<st>, 10> arr;
    fun(arr);
}
std::array<std::vector<st>, 10> fun()
{
    std::array<std::vector<st>, 10> v2;
    // Initialize v2...
    return v2;
}

int main()
{
    std::array<std::vector<st>, 10> arr = fun();
}