salve non ho molta esperienza, devo fare una matrice che si estenda dinamicamente in lunghezza e in larghezza...mi hanno consigliato un vector di vector...qualcuno può aiutarmi?
linguaggio c++
salve non ho molta esperienza, devo fare una matrice che si estenda dinamicamente in lunghezza e in larghezza...mi hanno consigliato un vector di vector...qualcuno può aiutarmi?
linguaggio c++
Dai un'occhiata qui.
http://www.emagsoftware.it/faqcpp.htm#9
Ci sono esempi classici con array oppure con vector.
This code and information is provided "as is" without warranty of any kind, either expressed
or implied, including but not limited to the implied warranties of merchantability and/or
fitness for a particular purpose.
però non risolve il mio problema, in quel caso la matrice richiede che si definisca il numero di righe...
per la mia matrice non devo dare un valore nè alle righe nè alle colonne, ma via via che il mio oggetto riceve vettori deve inserirli nella matrice come righe...non so se sono stato chiaro.
per questo mi consigliano vector di vector, ma non riesco a trovarli da nessuna parte.
Ho capito di cosa parli. Solo non mi è chiaro se ti serve una matrice di caratteri o stringhe. (Considerando che una std::string è simile a un vector<char>)
In ogni caso basta usare il metodo push_back() del vector (o del container che si desidera).
ocodice:// matrice di stringhe vector < string > ipaddr; vector < vector <string> > IPvXAddress; ipaddr.push_back("127.0.0.1") for( /* quel che è */) { IPvXAddress.push_back(ipaddr); } size_t szMtx = IPvXAddress.size(); size_t szRow = IPvXAddress[ da 0 a szMtx - 1 ].size(); string tmp = IPvXAddress[ da 0 a szMtx - 1 ][ da 0 a szRow - 1 ];
codice:// matrice di caratteri vector <string> IPvXAddress; for( /* quel che è */) { IPvXAddress.push_back("127.0.0.1") } size_t szMtx = IPvXAddress.size(); size_t szRow = IPvXAddress[ da 0 a szMtx - 1 ].size(); string tmp = IPvXAddress[ da 0 a szMtx - 1 ]; char c = IPvXAddress[ da 0 a szMtx - 1 ][ da 0 a szRow - 1 ]
This code and information is provided "as is" without warranty of any kind, either expressed
or implied, including but not limited to the implied warranties of merchantability and/or
fitness for a particular purpose.
mi serve una matrice di IPvXAddress, che sono string. Casualmente hai chiamato il tuo vector proprio IPvXAddress, pura coincidenza, spero non ci crei confusione.
ne mio caso non deve variare la lungheza dell Ind.IP.
mi spiego meglio:
ho dei vector di IPvXAddress; //con IPvXAddress stringa fissa e già definita
Mi serve un vector che in ogni campo abbia uno di quei vector di IPvXAddress.
come la definisco questa "matrice"?
Non è una coincidenza
Intanto una precisazione. Io per string intendo una std::string non una C string, quindi se hai qualcosa del genere:
è meglio se la trasformi in una std::string;codice:char ip[16]; // Array di char considerato una C string
Detto questo, basta usare la seconda versione del codice che ho postato.codice:std::string ips(ip);
In senso stretto è un vector di stringhe, non una matrice. Il fatto di poter usare la notazione [][] dipende dal fatto che anche la std::string possiede l'operatore [] (restituisce un carattere però.)
codice:vector <string> IPvXAddress; for( /* quel che è */) { IPvXAddress.push_back("127.0.0.1"); /* oppure */ string ipstring = valore_da_inserire; IPvXAddress.push_back(ipstring); } size_t szMtx = IPvXAddress.size(); size_t szRow = IPvXAddress[ da 0 a szMtx - 1 ].size(); string tmp = IPvXAddress[ da 0 a szMtx - 1 ]; char c = IPvXAddress[ da 0 a szMtx - 1 ][ da 0 a szRow - 1 ] for (size_t i = 0; i < szMtx; i++) { cout << IPvXAddress[i] << endl; }
This code and information is provided "as is" without warranty of any kind, either expressed
or implied, including but not limited to the implied warranties of merchantability and/or
fitness for a particular purpose.
è questo che volevo precisare, non devo fare un vector di stringhe, ma un vector di vector di stringhe :-)
stai usando l inet-manet per caso? almeno ti posso spiegare meglio.
anzi, sono riuscito a semplificarlo un pò, dunque:
va bene anche un vettore (di dimensione fissa=N) di vector di IPvXAddress, anzi meglio. molto meglio.
Non so cosa sia, mi spiace.inet-manet
Unma un vector di vector di stringhe (di dimensione fissa=N)
quindi.codice:vector < vector <string> >
codice:vector < vector <string> > IPvXAddress(N); size_t szMtx = IPvXAddress.size(); for (size_t i = 0; i < szMtx; i++) { IPvXAddress[i].resize(1); IPvXAddress[i][0] = "192.168.1.1"; }
This code and information is provided "as is" without warranty of any kind, either expressed
or implied, including but not limited to the implied warranties of merchantability and/or
fitness for a particular purpose.
perfetto, ti faccio un ultima domanda, poi ti saluto, grazie mille:
se ho un semplice vettore di IPvXAddress e non lo avessi inizializzato, all interno ho tutte stringhe di zeri?