Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    100

    matrice

    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++

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    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.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    100
    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.

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    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).
    codice:
    // 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 ];
    o
    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.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    100
    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"?

  6. #6
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Non è una coincidenza

    Intanto una precisazione. Io per string intendo una std::string non una C string, quindi se hai qualcosa del genere:
    codice:
    char ip[16]; // Array di char considerato una C string
    è meglio se la trasformi in una std::string;
    codice:
    std::string ips(ip);
    Detto questo, basta usare la seconda versione del codice che ho postato.
    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.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    100
    è 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.

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    100
    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.

  9. #9
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    inet-manet
    Non so cosa sia, mi spiace.
    ma un vector di vector di stringhe (di dimensione fissa=N)
    Un
    codice:
    vector < vector <string> >
    quindi.
    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.

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    100
    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?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.