Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Google ha appena rinnovato la sua celebre serie A con il Pixel 10a, lo smartphone della serie più conveniente se consideriamo il rapporto tra costo e prestazioni. Con il chip Tensor G4, un design raffinato soprattutto sul retro e l'integrazione profonda di Gemini, il colosso di Mountain View promette un'esperienza premium a un prezzo accessibile. E il retro non ha nessuno scalino
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
Al MWC Qualcomm annuncia una coalizione industriale per lanciare il 6G entro il 2029 e introduce agenti IA per la gestione autonoma della RAN. Ericsson, presente sul palco, conferma la direzione: le reti del futuro saranno IA-native fin dalla progettazione
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air è un ultraleggero da 1 kg con Ryzen 5 6600H, display 14" 16:10 e 16 GB LPDDR5. Offre buona portabilità, autonomia discreta e costruzione in alluminio, ma storage PCIe 3.0 e RAM saldata limitano l'espandibilità. A 549 euro sfida brand più noti nella stessa fascia di mercato.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-04-2015, 16:34   #1
andreact88
Junior Member
 
Iscritto dal: Aug 2011
Messaggi: 19
[C++] Liste di oggetti C++

Ciao a tutti, sono alle prese con le liste di oggetti in c++, purtroppo non ho ben chiaro il funzionamento. Qualcuno saprebbe spiegarmi come poterle fare?
Grazie
andreact88 è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2015, 16:42   #2
Simonex84
Senior Member
 
L'Avatar di Simonex84
 
Iscritto dal: Jun 2003
Messaggi: 15829
una lista è una sequenza di oggetti che contengono dei dati e l'indirizzo dell'elemento successivo (fatto nello stesso modo)

quindi ci devono essere almeno due campi un puntatore e un contenuto, bisogna sempre salvara da qualche parte l'indirizzo dell'elemento inziale, invece la fine la trovi quando un elemento punta a NULL.

Questa è una descrizione a grandi linee di cos'è una lista.

Il grosso vantaggio della lista è che puoi aggiungere elementi dinamicamente quindi per esempio potresti usarla per salvare una lista di interi, tipo vettore, del quale non conosci a priori la lunghezza.
Simonex84 è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2015, 17:11   #3
andreact88
Junior Member
 
Iscritto dal: Aug 2011
Messaggi: 19
Intanto ti ringrazio per la risposta.
Credo che la mia domanda fosse un po' troppo vaga.
Io riesco tranquillamente a creare una lista, accedervi aggiungendo ed eliminando elementi. Il mio problema nasce nel momento in cui la lista debba essere di oggetti. Anziché passare un "data" di tipo int, vorrei passare un oggetto.

Per esempio, vorrei creare una rubrica. Dunque la mia lista dovrà contenere un'insieme di persone. Supponendo di avere già una classe "Persone" con metodi e tutto, come faccio ad inserire un tot di persone ( questo tot non definito, chiaramente, sennò avrei optato per gli array )?

Spero di essere stato chiaro.
P.s. Non posso utilizzare <vector> o <list> in quanto il mio professore vuole che il tutto venga svolto senza questi ultimi.
andreact88 è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2015, 10:32   #4
71106
Bannato
 
Iscritto dal: Nov 2014
Messaggi: 292
Quote:
Originariamente inviato da andreact88 Guarda i messaggi
Ciao a tutti, sono alle prese con le liste di oggetti in c++, purtroppo non ho ben chiaro il funzionamento. Qualcuno saprebbe spiegarmi come poterle fare?
Grazie
Usa deque.

Esempio di dichiarazione:

Codice:
struct Object {
	int m_Field1;
	bool m_Field2;
	Object(int const a_Field1, bool const a_Field2) :
		m_Field1(a_Field1),
		m_Field2(a_Field2) {}
};

deque<Object> List;
Initializzazione:

Codice:
deque<Object> List{
	Object(-10, false),
	Object(3, true),
	Object(40, true),
	// ...
};
Inserimento:

Codice:
List.push_front(Object(-3, true)); // in testa
List.push_back(Object(1, false)); // in coda
Iterazione:

Codice:
for (auto it = List.begin(); it != List.end(); ++it) {
	cout << it->m_Field1 << ' ' << it->m_Field2 << endl;
}
Iterazione con Boost Lambda:

Codice:
for_each(List.begin(), List.end(),
	cout << _1->m_Field1 << ' ' << _1->m_Field2 << '\n');
cout << flush;
71106 è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2015, 10:43   #5
71106
Bannato
 
Iscritto dal: Nov 2014
Messaggi: 292
Pardon, ho suggerito il container sbagliato.

Credevo che deque fosse una lista doppiamente linkata mentre invece è un accrocchio strampalato basato su una specie di hash table.

Usa list, gli snippet di cui sopra sono più o meno validi per tutti i container STL e quindi restano sostanzialmente invariati.

Esempio di dichiarazione:

Codice:
struct Object {
	int m_Field1;
	bool m_Field2;
	Object(int const a_Field1, bool const a_Field2) :
		m_Field1(a_Field1),
		m_Field2(a_Field2) {}
};

list<Object> List;
Initializzazione:

Codice:
list<Object> List{
	Object(-10, false),
	Object(3, true),
	Object(40, true),
	// ...
};
Inserimento:

Codice:
List.push_front(Object(-3, true)); // in testa
List.push_back(Object(1, false)); // in coda
Iterazione:

Codice:
for (auto it = List.begin(); it != List.end(); ++it) {
	cout << it->m_Field1 << ' ' << it->m_Field2 << endl;
}
Iterazione con Boost Lambda:

Codice:
for_each(List.begin(), List.end(),
	cout << _1->m_Field1 << ' ' << _1->m_Field2 << '\n');
cout << flush;
71106 è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2015, 10:46   #6
71106
Bannato
 
Iscritto dal: Nov 2014
Messaggi: 292
Quote:
Originariamente inviato da andreact88 Guarda i messaggi
P.s. Non posso utilizzare <vector> o <list> in quanto il mio professore vuole che il tutto venga svolto senza questi ultimi.
Ah, ecco.

Il tuo professore è un idiota, se svolgessi il compito correttamente finiresti per riscrivere un container STL, cosa che non penso tu sia in grado di fare. Non perchè tu sia stupido, ma perchè dubito che il tuo professore sia entrato così a fondo in certi argomenti relativi al linguaggio C++. Esempio: vi ha mai parlato di R-value references e move semantics?
71106 è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2015, 10:50   #7
71106
Bannato
 
Iscritto dal: Nov 2014
Messaggi: 292
Quote:
Originariamente inviato da Simonex84 Guarda i messaggi
[...] invece la fine la trovi quando un elemento punta a NULL.
Per cortesia, siamo nel 2015.

La fine la trovi quando un elemento punta a nullptr, non a NULL.
71106 è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2015, 10:51   #8
Simonex84
Senior Member
 
L'Avatar di Simonex84
 
Iscritto dal: Jun 2003
Messaggi: 15829
Quote:
Originariamente inviato da 71106 Guarda i messaggi
Per cortesia, siamo nel 2015.

La fine la trovi quando un elemento punta a nullptr, non a NULL.
evabbhe cambia poco, poi il C lo uso poco, lavoro da 7 anni con ADA
Simonex84 è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2015, 10:55   #9
71106
Bannato
 
Iscritto dal: Nov 2014
Messaggi: 292
Quote:
Originariamente inviato da Simonex84 Guarda i messaggi
evabbhe cambia poco,
usare NULL è come usare gcc: nefasta inerzia tecnologia, nonchè cattiva programmazione. Se fosse "cambiato poco" non avrebbero introdotto nullptr.


Quote:
poi il C lo uso poco, lavoro da 7 anni con ADA
Ignorantia legis non excusat.

E comunque nullptr non è presente in C, solo in C++.
71106 è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2015, 11:01   #10
Simonex84
Senior Member
 
L'Avatar di Simonex84
 
Iscritto dal: Jun 2003
Messaggi: 15829
Quote:
Originariamente inviato da 71106 Guarda i messaggi
usare NULL è come usare gcc: nefasta inerzia tecnologia, nonchè cattiva programmazione. Se fosse "cambiato poco" non avrebbero introdotto nullptr.


Ignorantia legis non excusat.

E comunque nullptr non è presente in C, solo in C++.
ecco appunto, C++ non lo uso da informatica 1 e 2 seguiti nel 2003/2004, al lavoro quelle rare volte che non tratto codice ADA uso il C (senza i + )

Non è ignoranza ma scarsa memoria su cose che non uso mai
Simonex84 è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2015, 11:10   #11
71106
Bannato
 
Iscritto dal: Nov 2014
Messaggi: 292
Quote:
Originariamente inviato da Simonex84 Guarda i messaggi
Non è ignoranza ma scarsa memoria su cose che non uso mai
Tieni presente che nullptr non c'era nel 2003/2004...
71106 è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2015, 11:12   #12
Simonex84
Senior Member
 
L'Avatar di Simonex84
 
Iscritto dal: Jun 2003
Messaggi: 15829
Quote:
Originariamente inviato da 71106 Guarda i messaggi
Tieni presente che nullptr non c'era nel 2003/2004...
sarà mica il caso che mi faccia un bel ripasso di C++
Simonex84 è offline   Rispondi citando il messaggio o parte di esso
Old 20-04-2015, 15:37   #13
andreact88
Junior Member
 
Iscritto dal: Aug 2011
Messaggi: 19
Vi ringrazio ragazzi per le risposte, il professore alla fine si è convinto a far utilizzare list e vector
Adesso ho un solo quesito, durante l'utilizzo della funzione push_front, io volevo passare anzichè dei parametri, una funzione per l'inserimento dei valori, è possibile farlo?

Es.
Anzichè:
Codice:
lista.push_front(classe(valore));
Volevo utilizzare qualcosa del genere:
Codice:
lista.push_front(classe e funzione add valori)

Ultima modifica di andreact88 : 20-04-2015 alle 15:42.
andreact88 è offline   Rispondi citando il messaggio o parte di esso
Old 20-04-2015, 17:56   #14
[Kendall]
Senior Member
 
L'Avatar di [Kendall]
 
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
Quote:
Originariamente inviato da andreact88 Guarda i messaggi
Vi ringrazio ragazzi per le risposte, il professore alla fine si è convinto a far utilizzare list e vector
Adesso ho un solo quesito, durante l'utilizzo della funzione push_front, io volevo passare anzichè dei parametri, una funzione per l'inserimento dei valori, è possibile farlo?

Es.
Anzichè:
Codice:
lista.push_front(classe(valore));
Volevo utilizzare qualcosa del genere:
Codice:
lista.push_front(classe e funzione add valori)
Non ho ben capito cosa intendi per "funzione per l'inserimento dei valori".
[Kendall] è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026 6G, da rete che trasporta dati a rete intelligen...
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso CHUWI CoreBook Air alla prova: design premium, b...
Roborock Saros 20: il robot preciso e molto sottile Roborock Saros 20: il robot preciso e molto sott...
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm ASUS ROG Kithara: quando HIFIMAN incontra il gam...
Fra 3 giorni, a mezzanotte, Amazon attiv...
Il principale limite del MacBook Neo &eg...
899€ in tutti i colori, crolla il prezzo...
Sempre più pubblicità su Y...
Costo della memoria alle stelle? Non ave...
GPT-5.4 cambia il modo di usare ChatGPT:...
Centinaia di petabyte in una molecola: l...
Lenovo al MWC 2026: dal PC modulare all'...
Huawei presenta gli agenti di IA per le ...
Alla scoperta di GAIA, la piattaforma IA...
Crimson Desert alla ricerca dell'equilib...
Ray-Ban Meta, video privati visionati da...
Epic Games fa causa a un ex collaborator...
BYD Blade Battery di seconda generazione...
Pop Mart vs Bambu Lab: la battaglia lega...
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: 09:44.


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