|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Feb 2003
Città: Verona
Messaggi: 1890
|
[c++] vector di strutture
Come gestisco un vector di strutture
struct lot1 { int num[5][10]; int ind, anno; char mese[15]; } ; vector (lot1) lot; Ora come inserisco i dati? Come lo leggo? Grazie
__________________
DESKTOP: Intel i9-9900KF + dissipatore ARCTIC Freezer 34 eSports DUO su Asus Prime Z390-P + Kingston FURY Beast 32GB (2x16GB) 3200MHz DDR4 CL16 +Asrock Challenger Radeon RX 6600 XT + ENERMAX REVOLUTION D.F. 2 Alimentatore 850W + Silicon Power SSD PCIe M.2 NVMe 1TB+ Seagate tgBarraCuda, 4 TB, Hard Disk Interno, SATA da 6 GBit/ + case Sharkoon TG5. |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Già il fatto di scrivere vector (lot1) lot; significa che forse devi guardarti un pò la sintassi del C++. Hai almeno cercato un pò di documentazione su vector? http://www.cplusplus.com/reference/stl/vector/ http://www.cppreference.com/wiki/container/vector/start Per riassumere push_back per inserire, e at, [], front, back per accedere ad un elemento. Per scorrere gli elementi si usano gli iteratori tramite begin e end: Codice:
for_each(lot.begin(), lot.end(), [&](const lot1 & lot) { //fai qualcosa }); |
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
Quote:
Dunque, io mi chiedo: ho una variabile di tipo stuct, composta da n. argomenti. Voglio fare la comparazione dei suoi argomenti con delle variabili. Va bene, non dovrebbero esserci problemi. MA se io ho n. variabili, dello stesso tipo struct, e voglio fare la stessa comparazione per ogni membro, per ogni variabile? Esempio: Io definisco una struttura struct Studente {string nome;string cognome;}, poi dichiaro la variabile alunno di tipo studente: studente alunno;, poi assegno il valore ai membri: alunno.nome="Pippo"; alunno.cognome="Rossi";. Poi verifico se i mebri della variabile sono uguali a delle variabili. Es: string nomealunno=alunno.nome;. Fino a qui tutto chiaro. Ma se io ho 8 variabili alunno di tipo studente, e voglio fare questa comparazione su i membri di tutte le 8 variabili? Ovvero su alunno1.nome,alunno2.nome ecc? Creo un ciclo for? Potrebbe essermi utile "vector"? Forse c'è più di un modo per ottenere la stessa elaborazione..? Ultima modifica di Albitexm : 19-03-2011 alle 21:33. |
|
![]() |
![]() |
![]() |
#4 | ||
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Quote:
Intato vuoi confrontare i nomi degli 8 alunni con la stessa variabile oppure no? Questi 8 alunni sono strutturati in qualche modo nel codice o sono presenti 8 dichiarazioni distinte (es. studente1, studente2,...) per questi alunni in maniera non organizzata? Hai un oggetto di tipo Classe che continene l'elenco degli alunni? Se queste 8 variabili alunno hanno un qualche contatto logico tra di loro sicuramente mantenerli in un vector potrebbe avere più senso che non 8 variabili distinte. Il tuo problema è prima di tutto un problema di design del codice. |
||
![]() |
![]() |
![]() |
#5 | ||
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
Quote:
Quote:
Questa struttura ha 8 membri: nome,cognome,telefono ecc.. Ho creato la variabile alunno di tipo studente. Quindi tramite un algoritmo ho assegnato dei valori a ogni membro della variabile alunno. Ok. Ora, se io voglio confrontare ognuno degli 8 membri con una variabile (alunno.nome==string "") come posso fare? Io ho usato if, switch, lavorando membro per membro. Ma a questo punto come mi è servito creare una struttura? Avrei potuto dichiarare n. variabili semplici. C'è un modo più performante, sicuramente. variabile |
||
![]() |
![]() |
![]() |
#6 | ||
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Perchè mai confrontare il nome dell'alunno con una variabile che magari contiene un numero di telefono? Quote:
|
||
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
Quote:
Ma ragruppa un'insieme di variabili che hanno un comune denominatore. Quindi fanno parte dell'insieme. Questi membri della struttura io voglio confrontarli con una variabile, dello stesso tipo ovviamente. Ma se io devo fare questo confronto membro x membro, non ha molto senso avere creato una struttura. Forse dovrei usare un ciclo for each? Io ho 3 o 4 insiemi di tipo diverso, raprresentati da variabili di equivalenti tipi per equvalenti strutture. Quello che io vorrei: invece di scrivere if string a==membro1 else if string a==membro2 ecc, scrivere if string a== (compara a a tutti gli otto membri della variabile studente,uno per uno-cioè devo sapere se è uguale a un membro, a quale) Ultima modifica di Albitexm : 21-03-2011 alle 17:31. |
|
![]() |
![]() |
![]() |
#8 | |||
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
![]() Quote:
Quote:
In ogni caso sembra che la struttura dati più adeguata al tuo caso fosse un contenitore standard (vector,list,queue,set) piuttosto che una struttura. |
|||
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
Grazie
Ultima modifica di Albitexm : 23-03-2011 alle 04:39. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:58.