2010-10-03 89 views
0

您可以在一行中插入操作,并为内部矢量分配内存吗?插入到2D矢量中

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

你真的是'一,一[5]'还是你的意思是'一个,和一个[5] '或'a,a + 5'? – 2010-10-03 14:26:43

+0

请注意,'vector > myvector;'在C++ 03中不合格,因为'>>'会被解释为一个右移运算符。 – 2010-10-03 14:26:50

+0

是的,我的意思是,&a [5]。 – user963241 2010-10-03 14:28:39

回答

3

是,std::vector有一个模板的构造,这需要对迭代的,所以你可以使用:

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

一对指针的作品为一对迭代。

+0

啊构造.. – user963241 2010-10-03 14:27:09

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