您可以在一行中执行插入操作以及为内部向量分配内存吗?
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
}
答案 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] ) );