2010-10-03 9 views
0

Pourriez-vous effectuer l'opération d'insertion sur une ligne avec l'allocation de mémoire pour le vecteur interne?Insertion dans le vecteur 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

Vouliez-vous dire vraiment 'a, a [5]' ou vouliez-vous dire 'a, et un [5] 'ou' a, a + 5'? –

+0

Notez que 'vecteur > myvector;' est mal formé en C++ 03 parce que '>>' serait interprété comme un opérateur de décalage vers la droite. –

+0

Oui, je veux dire a, & a [5]. – user963241

Répondre

3

Oui, std::vector a un constructeur de modèle qui prend une paire de itérateurs de sorte que vous pouvez utiliser:

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

Une paire de pointeurs fonctionne comme une paire de itérateurs.

+0

ah le constructeur .. – user963241

0

données Minimisation copie du tableau dans le vecteur pourrait être important pour la performance si les dimensions grossissent:

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