2010-10-03 160 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]));