Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++]container "leggero"

    ciao.
    Devo caricare in memoria da un file 3d molti dati , su cui non devo effettuare alcuna operazione , solo leggerli all' occorrenza.
    Mi sembra che sia meglio creare un container personalizzato per risparmiare memoria , le stl sono ottime , ma ho letto e provato che occupano molta memoria e se aggiungo , come ho detto che non usero' mai tutto cio' che possono fare....
    So come fare una lista con i template , ma voi cosa usereste?
    esiste qualcosa di gia fatto?
    per perdere meno tempo.
    ciao.

  2. #2
    Se sai in anticipo quanti dati devi caricare, il std::vector è un'ottima soluzione, con overhead quasi nullo rispetto ad un array allocato tramite new.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Se il problema è la memoria, userei una lista, che occupa il minimo di memoria possibile.
    Se il problema è il tempo di accesso allora la lista è fuori discussione, decisamente meglio il vector.
    Comunque, come ti ha già detto MItaly sopra di me, un vector è quasi sicuramente la soluzione che cerchi, a condizione che ti ricordi di usare reserve().
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  4. #4
    Originariamente inviato da Ippo343
    Se il problema è la memoria, userei una lista, che occupa il minimo di memoria possibile.
    A parità di elementi memorizzati, nulla occupa meno spazio di un vettore dimensionato in maniera corretta. Con la lista "sprechi" lo spazio di due puntatori per ogni elemento.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Si beh intendevo che un vector (senza usare reserve) tiene via un sacco di memoria che rimane vuota. Non sono stato preciso, scusa
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  6. #6
    Originariamente inviato da Ippo343
    Si beh intendevo che un vector (senza usare reserve) tiene via un sacco di memoria che rimane vuota. Non sono stato preciso, scusa
    Al contrario, se usi reserve lo predimensioni alle dimensioni specificate, se non lo usi parte con una certa dimensione di allocazione (che potrebbe anche essere un solo elemento) e, man mano che ne aggiungi, raddoppia le sue dimensioni, per cui nel caso medio spreca un terzo delle sue dimensioni "ufficiali"; peraltro in generale il sistema operativo non alloca per davvero tutta quella memoria, ma la fornisce on demand usando i page faults.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.