Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [c++]vector e matrice

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++]vector e matrice

    Ciao.
    Ho dei dati in un vector del tipo:
    vector<vector<float>> matrice;

    vorrei trasferirli in una matrice bidimensionale dove la prima colonna è un indice intero e la seconda un array di float e scorrerla con un puntatore anziche' con un iteratore(del vector).
    in pratica qualcosa del tipo :matrice[int][float]
    Lo faccio perchè ho delle matrici molto grandi e metterli in un vector è molto piu' lento.
    E' possibile?
    come costruisco la matrice?
    grazie

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Se per te è uguale usare la matrice come matrix(row,col) invece che matrix[row][col] puoi prendere spunto da qui:
    http://www.parashift.com/c++-faq-lit...html#faq-13.10
    (e seguente)
    In questo modo risparmi n allocazioni giocando poi sugli indici. (E' spiegato anche il perché)
    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
    Jun 2003
    Messaggi
    4,826
    grazie , molto interessante , ma volevo qualcosa di "scorribile" utilizzando puntatori perchè appunto deve essere molto veloce (ho piu' di 100000 elementi ).

    è possibile creare qualcosa del tipo:
    int rows = 100;
    int columns = 100;
    int[rows]float[columns] variabile = new ...

    float *pPunt = variabile[0][0];
    scrivere con
    *pPunt = 1.001;
    *pPunt++;
    *pPunt = 2.222;
    e leggere con

    float *pPunt = variabile[0][0];

    float f1=*pPunt++;
    float f2=*pPunt++;

    ecc....

    ho buttato li , ma com è la sintassi giusta?
    Grazie.

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Perché float l'indice?
    codice:
    matrice[int][float];
    Mah, non vedo tutto questo "guadagno" in termini di velocità.
    Comunque se vuoi evitare l'overhead dell'operatore() e scorrere tutto tramite un unico puntatore meglio se consideri la matrice come un array di dimensione rows*cols e giocare con gli indici per ricavare l'offset. In caso di allocazione dinamica hai sempre la certezza che gli elementi siano contigui.
    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.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.