Вставить в 2D вектор - PullRequest
       5

Вставить в 2D вектор

0 голосов
/ 03 октября 2010

Не могли бы вы выполнить операцию вставки в одну строку вместе с выделением памяти для внутреннего вектора?

  vector <vector<int>> myvector;

  int a[] = {0, 1, 2, 3, 4};

  for (int index = 0; index < 2; index++)
  {
      myvector.push_back(vector<int>()); //allocate memory for internal vector
      myvector[index].insert(myvector[index].begin(), a, &a[5]); //insert
  }

Ответы [ 2 ]

3 голосов
/ 03 октября 2010

Да, std::vector имеет конструктор шаблона, который принимает пару итераторов, поэтому вы можете использовать:

myvector.push_back( std::vector<int>( a, a + 5 ) );

Пара указателей работает как пара итераторов.

0 голосов
/ 03 октября 2010

Минимизация копирования данных из массива в вектор может быть важна для производительности, если размеры увеличиваются:

std::vector <std::vector<int>> myvector(2);
int a[] = {0, 1, 2, 3, 4};
size_t elements = sizeof(a) / sizeof(int);

myvector[0].reserve(elements);
std::copy ( a, a + elements, std::back_inserter ( myvector[0] ) );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...