Инициализировать 2-мерный вектор <int>в CPP - PullRequest
3 голосов
/ 04 ноября 2010

Как инициализировать двумерный vector<int> в C ++?

Например, у меня есть 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 ]

2 голосов
/ 04 ноября 2010
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 голосов
/ 04 ноября 2010
aa[i].assign(a1,a1+8);
0 голосов
/ 04 ноября 2010

Инициализация aa также инициализировала все четыре содержащихся vector<int> объекта, используя конструктор по умолчанию для vector<int>.Поэтому вам нужно добавить данные в эти пустые векторы, а не инициализировать их.

Попробуйте, например:

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