如何使用=复制向量数组,引发错误Expression:转置指针范围

时间:2019-05-06 11:57:02

标签: c++ arrays vector copy

我需要复制作为引用传递给构造函数/函数的向量数组。

成员变量获取对传递的向量数组的引用

在以下代码下运行时出现错误表达式:转置指针范围

#define MAX 1001
Constructor( std::vector< int > (&Adj)[MAX])
{
    (this->Adj[MAX]) = Adj[MAX];
}

2 个答案:

答案 0 :(得分:3)

如果您确实想要固定(编译时)大小为std::vector array ,请使用std::array

#include <array>
#include <vector>

Constructor (const std::array<std::vector<int>, MAX>& rhs)
{
   this->Adj = rhs;
}

并将Adj声明为

std::array<std::vector<int>, MAX> Adj

答案 1 :(得分:1)

您可以使用std::copy复制数组:

#include <cstddef>    // size_t
#include <vector>     // std::vector<>
#include <algorithm>  // std::copy();

constexpr size_t max{ 3 };

struct foo {
    std::vector<int> Adj[max];

    foo(std::vector<int> (&values)[max])
    {
        std::copy(std::begin(values), std::end(values), std::begin(Adj));
    }
};

int main()
{
    std::vector<int> values[max];
    foo f{ values };
}