在CPP中初始化2维向量<int> </int>

时间:2010-11-03 21:02:05

标签: c++ vector initialization multidimensional-array int

如何在C ++中初始化二维vector<int>

例如,我有4个长度为8个整数的数组,如下所示

int a1[] = {1,2,3,4,5,6,7,8};
int a2[] = {1,2,3,4,9,10,11,12};
int a3[] = {1,2,5,6,9,10,13,14};
int a4[] = {1,3,5,7,9,11,13,15};

我有这个

vector< vector <int> > aa (4);

aa[i] (a1,a1+8);

但这会给出错误。我甚至尝试将数组a1提供给v1并将v1传递给aa[i],但它仍然失败。

那么初始化二维vector<int>

的元素的正确方法是什么

3 个答案:

答案 0 :(得分:2)

aa[i].assign(a1,a1+8);

答案 1 :(得分:2)

int arr[4][8] =
{
    {1, 2, 3, 4, 5,  6,  7,  8},
    {1, 2, 3, 4, 9, 10, 11, 12},
    {1, 2, 5, 6, 9, 10, 13, 14},
    {1, 3, 5, 7, 9, 11, 13, 15},
};

std::vector<std::vector<int> > vec(4, std::vector<int>(8));
for (int i = 0; i < 4; ++i)
{
    vec[i].assign(arr[i], arr[i] + 8);
}

答案 2 :(得分:0)

aa的初始化还使用vector<int>的默认构造函数初始化了所有四个包含的vector<int>个对象。因此,您需要向这些空向量添加数据,而不是初始化它们。

试着举例:

std::copy(a1, a1+8, std::back_inserter(aa[i]));