插入2D矢量

时间:2010-10-03 14:22:34

标签: c++ stl vector

您可以在一行中执行插入操作以及为内部向量分配内存吗?

  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 个答案:

答案 0 :(得分:3)

是的,std::vector有一个模板构造函数,它接受一对迭代器,以便你可以使用:

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

一对指针用作一对迭代器。

答案 1 :(得分:0)

如果尺寸变大,最小化数据从数组复制到向量可能对性能很重要:

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] ) );