La ragione matrici non possono essere utilizzati in contenitori STL è perché richiede il tipo da copiare costruibile e programmabile (mouverà costruibile in C++ 11). Ad esempio, non è possibile effettuare le seguenti operazioni con le matrici:
int a[10];
int b[10];
a = b; // Will not work!
Poiché gli array non soddisfano i requisiti, non possono essere utilizzati. Tuttavia, se si realmente bisogno di utilizzare un array (che probabilmente non è il caso), è possibile aggiungerlo come un membro di una classe in questo modo:
struct A { int weight[2];};
std::vector<A> v;
Tuttavia, probabilmente sarebbe meglio se si utilizzato un std::vector
o std::array
.
fonte
2012-06-15 04:16:44
Questo potrebbe funzionare con un vettore di 'std :: array's,' std :: vector's, o 'std :: pair's. Il tuo array sta decadendo su un puntatore quando viene passato, causando problemi. – chris
Grazie, chris. Lo capisco. – MrROY
Penso che ci sia una buona risposta in attesa di venire fuori con tutte le specifiche del perché non funziona, che troverei una lettura interessante e illuminante. C'è di più che decadere, ma non sono sicuro di cosa ci sia. – chris