Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Motorola razr fold, dalla conchiglia al formato a libro. La recensione
Motorola razr fold, dalla conchiglia al formato a libro. La recensione
Abbiamo provato Motorola razr fold, il pieghevole a libro con display interno LTPO da 8,09 pollici, Snapdragon 8 Gen 5 e batteria da 6000 mAh in 243 grammi. Pennino e custodia sopno già nella confezione, per un foldable che si caratterizza per il pannello luminoso, l'autonomia ottima per la categoria e le fotocamere coerenti e ben sfruttabili. Il listino è di 1999 euro, ma in vendita si trova già a molto meno
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente
Google Pixel Watch 5 ha affinato una formula già convincente con hardware più veloce, Gemini offline e nuovi strumenti per sport e benessere. Abbiamo provato la versione LTE da 41 mm, comoda anche di notte e ben proporzionata sui polsi piccoli. Il design resta un punto di forza, ma l'autonomia premia ancora il 45 mm e alcune funzioni AI non sono disponibili in Italia: ecco che cosa cambia rispetto a Watch 4 e quale formato conviene scegliere oggi
Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo
Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo
Politica, accademia e industria a confronto su mercato unico, sicurezza e competitività. Nei laboratori di Vimercate, Nokia ha mostrato le nuove generazioni di chip ottici e i test che ogni prodotto deve superare prima di arrivare sul mercato
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-01-2009, 17:17   #1
robs05
Member
 
Iscritto dal: Jan 2007
Messaggi: 112
[C++]: Differenza tra list<Item *> e list<Item>

Salve,

vorrei chiarire un dubbio che differenza c'è tra list<Item *> e list<Item>?

Provo a dare una risposta:

In effetti list<Item> lista dichiaro una lista che può contenere istanze della classe Item. Posso inserire elementi con il metodo lista.push_back()
es.

Codice:
list<Item> lista;
Item uno(1);
Item due(2);
lista.push_back(uno);
lista.push_back(due);

list<Item>::iterator it = lista.begin();
for(; it != lista.end();it++)
     cout << it->getX() << endl;
e questo codice gira.

Invece con list<Item *> lista dichiaro un contenitore che può contenere puntatori a istanze di quella classe quindi

Codice:
list<Item *> lista;
Item *uno = new Item(1);
Item due(2);
lista.push_back(uno);
lista.push_back(&due);

list<Item *>::iterator it = lista.begin();
for(; it != lista.end();it++)
     cout << (*it)->getX() << endl;
e questo codice anche gira!

La mie domande sono:

le affermaizoni che ho fatto sono giuste?
se si qual'è la differenza nell'usare la prima metodologia oppure la seconda?
quando conviene usare la prima o la seconda?
sono scelte implementative? si è liberi di fare come crede o sono legate a qualcosa?

grazie mille
robs05 è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2009, 17:58   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Item due(2);
lista.push_back(&due);

Questa cosa perde senso se lista esiste anche al di fuori dello scope di due.
Infatti due al di fuori del suo blocco di visibilità può essere anche stata deallocata e sostituita da altri dati. Di conseguenza il puntatore non è più valido.

Il primo tipo di lista usa infatti il costruttore di copia per memorizzare i dati all'interno della lista.

Il secondo tipo è più adatto ad oggetti allocati dinamicamente. Nota che prima di distruggere l'oggetto list devi anche deallocare tutte gli elementi al suo interno.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2009, 18:22   #3
robs05
Member
 
Iscritto dal: Jan 2007
Messaggi: 112
invece cosi:

Codice:
list<Item *> lista;
Item *uno = new Item(1);
Item *due = new Item(2);
lista.push_back(uno);
lista.push_back(due);

list<Item *>::iterator it = lista.begin();
for(; it != lista.end();it++)
     cout << (*it)->getX() << endl;
andrebbe bene..... giusto?

invece poi questa scrittura?

Codice:
    list<Item> lista;
    Item *uno = new Item(1);
    Item due(2);
    lista.push_back(*uno);
    lista.push_back(due);

    list<Item>::iterator it = lista.begin();
    for(; it != lista.end();it++)
        cout << it->getX() << endl;
ha senso?
robs05 è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2009, 18:27   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Vanno bene entrambi. Nel primo ovviamente non devi deallocare uno e due, ma devi deallocare gli elementi contenuti nella lista quando la svuoti.
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica NVIDIA RTX Spark: il PC Windows on ARM costruito...
Motorola razr fold, dalla conchiglia al formato a libro. La recensione Motorola razr fold, dalla conchiglia al formato ...
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente Recensione Google Pixel Watch 5: sembra lo stess...
Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo Nokia Innovation Day 2026: la sovranità e...
In sella alla Fiido Nomads Pro: e-bike con motore centrale da 100 Nm per il divertimento a 360 gradi In sella alla Fiido Nomads Pro: e-bike con motor...
816 CV e 0-300 km/h in 16 secondi: Peuge...
Il Politecnico di Milano ha registrato u...
Samsung lavora al Privacy Display v2: sa...
SBS presenta i nuovi accessori Track Fir...
Castlevania: Belmont's Curse, la caccia ...
Nuova promozione Amazon Haul: 5% di scon...
Netflix taglia circa mille posti di lavo...
Bodywel F20PRO a 759€: e-bike pieghevole...
iPhone Duo, senza AppleCare+ riparare lo...
Amazon, offerte da non perdere oggi: Mac...
1.500 km con una ricarica: CATL e Changa...
Rockstar Games punta a ridurre i tempi d...
Accessori auto su Amazon da 22€: aspirab...
Oltre 436 km senza ricaricare: questa mo...
Samsung Health si aggiorna: il coaching ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 13:09.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v