在C ++中将数组指针插入2维向量

时间:2017-03-08 09:06:55

标签: c++ arrays vector

我想用C ++问, 如何将数组插入2 dim数组的末尾? 我的代码仍然会从编译器中获得错误,就像这样

int *A;
A = new int[10];
vector<vector<int>> myarray;

for (int j = 0; j < 5; j++)
{
    for (int i = 0; i < 10; i++)
    {
        A[i] = i + j;

    }

    myarray.push_back(vector<int>{10});

    copy(A, A + 10, myarray.back());
    }

错误是

  

C2794:'iterator_category':不是'std :: iterator_traits&lt; _OutIt&gt;'的任何直接或间接基类的成员

2 个答案:

答案 0 :(得分:0)

最简单的方法不是将数组推到后面,而是向量。以下代码有效,因为对vector :: push_back的调用会复制a并将其推回myarray。

vector<int> A(10);
vector<vector<int>> myarray;

for (int j = 0; j < 5; j++)
{
    for (int i = 0; i < 10; i++)
    {
        A[i] = i + j;
    }
    myarray.push_back(A); // push one line for each j=0 to 4 to the back of my array
}

答案 1 :(得分:0)

这里的问题是你真的没有将矢量A放入矢量myArray中。您正在做的是将一个仅包含10的向量放入myArray中,因为您正在执行此操作....

myarray.push_back(vector<int>{10});

你想要做的是填充你已经完成的矢量A,然后是..

myarray.push_back(A);