Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Opera Neon: il browser AI agentico di nuova generazione
Opera Neon: il browser AI agentico di nuova generazione
Abbiamo provato il nuovo web browser con intelligenza artificiale della serie Opera accessibile tramite abbonamento. Ecco le nostre prime impressioni sulle funzionalità di Opera Neon basate su AI e come funzionano
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Con la prima rete 5G Standalone attiva in Italia, WINDTRE compie un passo decisivo verso un modello di connettività intelligente che abilita scenari avanzati per imprese e pubbliche amministrazioni, trasformando la rete da infrastruttura a piattaforma per servizi a valore aggiunto
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-09-2008, 09:30   #1
supernovae
Junior Member
 
Iscritto dal: Jul 2008
Messaggi: 24
[C++]array dinamici

ciao a tutti, ho un problema con la definizione di array allocati dinamicamente.
In pratica ho una classe che ha nei campi privati un array di puntatori ad oggetti ed un intero che dovrebbe essere la dimensione di tale array.
in alcune funzioni ho bisogno di aggiungere oggetti all'array ma se provo a farlo senza riallocare l'array mi da un errore di segmentazione.
Non posso fare neanche una cosa del genere:
es
class x
{.......}
class y
{......
private:
x* array;
int dim;
};

funz()
{....
x=new y[dim];
}
dato che la classe y non ha un costruttore di default

come posso riallocare nuova memoria per l'array
supernovae è offline   Rispondi citando il messaggio o parte di esso
Old 18-09-2008, 10:18   #2
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Ma usare vector no?
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 18-09-2008, 10:44   #3
supernovae
Junior Member
 
Iscritto dal: Jul 2008
Messaggi: 24
con i vector l'ho gia fatto, volevo provarlo a fare con gli array dinamici
supernovae è offline   Rispondi citando il messaggio o parte di esso
Old 18-09-2008, 10:51   #4
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da supernovae Guarda i messaggi
con i vector l'ho gia fatto, volevo provarlo a fare con gli array dinamici
Allora devi implementarti una lista, con le operazioni di ricerca, inserimento e cancellazione. E' il modo corretto di creare un insieme di elementi ridimensionabile a piacere (che è quello che vuoi te)
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 18-09-2008, 12:14   #5
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Allora devi implementarti una lista, con le operazioni di ricerca, inserimento e cancellazione. E' il modo corretto di creare un insieme di elementi ridimensionabile a piacere (che è quello che vuoi te)
no, è il modo corretto di implementare un multinsieme ordinato di elementi ridimensionabile in tempo costante ma con tempo di accesso lineare.

gli array sono molto diversi dalle liste: se vuole ammortizzare il tempo di ridimensionamento di un array può usare algoritmi particolari (es: raddoppiare la dimensione fisica ad ogni "sforamento" anziché incrementarla solo di 1).

tuttavia la domanda non era a carattere algoritmico: non si è capito cosa stia chiedendo supernovae, anche perché il codice che ha riportato è sbagliato (assegna un puntatore y* al nome di un tipo, "x", non ha senso).
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 18-09-2008, 14:01   #6
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da 71104 Guarda i messaggi
no, è il modo corretto di implementare un multinsieme ordinato di elementi ridimensionabile in tempo costante ma con tempo di accesso lineare.
Spiegami quale tra multiinsieme e ordinato non si applica anche alla definizione di array.
Poi chi ha detto che l'accesso ad una lista debba essere lineare?
Puoi sempre usare strutture d'appoggio e ridurre il costo di accesso.
In più hai la possibilità di rimuovere o inserire in mezzo all'insieme cosa che con l'array (e vector) non fai con la stessa efficienza.

Quote:
gli array sono molto diversi dalle liste: se vuole ammortizzare il tempo di ridimensionamento di un array può usare algoritmi particolari (es: raddoppiare la dimensione fisica ad ogni "sforamento" anziché incrementarla solo di 1).
In pratica reimplementa vector.
Avendo scartato vector pensavo cercasse di implementare una alternativa.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 18-09-2008, 14:15   #7
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Spiegami quale tra multiinsieme e ordinato non si applica anche alla definizione di array.
ho mai sostenuto una cosa del genere?


Quote:
Poi chi ha detto che l'accesso ad una lista debba essere lineare?
Puoi sempre usare strutture d'appoggio e ridurre il costo di accesso.
come ad esempio un array


Quote:
In più hai la possibilità di rimuovere o inserire in mezzo all'insieme cosa che con l'array (e vector) non fai con la stessa efficienza.
si ma non è che i doni ti scendono dal cielo: se usi una lista il tempo di accesso è lineare; se usi un array il tempo di accesso è costante ma è lineare quello di inserzione. se li usi entrambi hai le limitazioni di entrambi

ora non mi venire a blaterare di dizionari, hash tables, alberi di ricerca, alberi RB... queste cose le sappiamo tutti, ma a supernovae non gliene frega un cavolo: lui ha un problema molto banale col C++ che gli altri stentano a capire, ma non è un problema algoritmico
probabilmente non deve neanche realizzare un programma efficiente, sta solo facendo qualche esperimento didattico.


Quote:
In pratica reimplementa vector.
è lui che vuole farsi male, mica io.

Quote:
Avendo scartato vector pensavo cercasse di implementare una alternativa.
te l'ha anche detto qual è l'alternativa:
Quote:
Originariamente inviato da supernovae Guarda i messaggi
con i vector l'ho gia fatto, volevo provarlo a fare con gli array dinamici
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 18-09-2008, 14:17   #8
supernovae
Junior Member
 
Iscritto dal: Jul 2008
Messaggi: 24
Quote:
Originariamente inviato da 71104 Guarda i messaggi
tuttavia la domanda non era a carattere algoritmico: non si è capito cosa stia chiedendo supernovae, anche perché il codice che ha riportato è sbagliato (assegna un puntatore y* al nome di un tipo, "x", non ha senso).
con quello che ho scritto volevo indicare una classe che ha come campo privato un array di puntatori ad oggetti del tipo x con dimensione variabile.
supernovae è offline   Rispondi citando il messaggio o parte di esso
Old 18-09-2008, 14:18   #9
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da supernovae Guarda i messaggi
con quello che ho scritto volevo indicare una classe che ha come campo privato un array di puntatori ad oggetti del tipo x con dimensione variabile.
non faresti prima a scrivere un codice corretto così capiamo tutti?
esemplificativo ma corretto.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 18-09-2008, 14:24   #10
supernovae
Junior Member
 
Iscritto dal: Jul 2008
Messaggi: 24
Quote:
Originariamente inviato da 71104 Guarda i messaggi
probabilmente non deve neanche realizzare un programma efficiente, sta solo facendo qualche esperimento didattico.
si hai ragione, sto semplicemente provando a svolgere un esercizio in un altro modo
supernovae è offline   Rispondi citando il messaggio o parte di esso
Old 18-09-2008, 14:30   #11
supernovae
Junior Member
 
Iscritto dal: Jul 2008
Messaggi: 24
Quote:
class Point3D
{
Point3D(double xx, double yy, double zz) : x(xx), y(yy), z(zz) {}
double x, y, z;
};
Quote:
class Polyline
{
public:
Polyline();
Polyline(const Polyline& obj);
Polyline(Point3D* points, int pointCount);
~Polyline();
Polyline& operator = (const Polyline& obj);
void add_point();
int num_point() const;
Point3D at(int i);
private:
Point3D* Points;
int dim;
};
ad esempio nell'implementare il costruttore di copia ho bisogno di allocare nuova memoria nell'array Points, altrimenti va in errore di segmentazione, vero?
supernovae è offline   Rispondi citando il messaggio o parte di esso
Old 18-09-2008, 18:48   #12
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
hai tre scelte:
1) usare vector
2) gestire lo stesso array in oggetti diversi e stare attento alla deallocazione
3) ricopiare tutto l'array, ma il problema è un altro: alla classe Point3D manca il costruttore no-arg, di quegli array non puoi allocarne neanche uno.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 15:34   #13
supernovae
Junior Member
 
Iscritto dal: Jul 2008
Messaggi: 24
Quote:
Originariamente inviato da 71104 Guarda i messaggi
alla classe Point3D manca il costruttore no-arg, di quegli array non puoi allocarne neanche uno.
ok pare che siamo arrivati alla conclusione del mio problema. Pensavo che esistesse un altro modo per allocare l'array senza dichiarare un costruttore di default, invece mi sbagliavo...e si che il dev me lo provava a far capire in tutti i modi
supernovae è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2008, 21:53   #14
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da supernovae Guarda i messaggi
ok pare che siamo arrivati alla conclusione del mio problema. Pensavo che esistesse un altro modo per allocare l'array senza dichiarare un costruttore di default, invece mi sbagliavo...e si che il dev me lo provava a far capire in tutti i modi
aldilà di tutto il "dev" come lo chiami tu (non che m'importi visto che del nome di quel cesso puoi fare tutto lo scempio che vuoi) puoi anche usarlo per il tiro al bersaglio
Dev-C++ è una cosa totalmente priva di senso: vecchio, buggato, privo di features, non più sviluppato, non più supportato, e perdipiù usa un compilatore che non è quello "ufficiale" per programmare su Windows (smettiamola con la mania dell'open-source: il MinGW ha un Platform SDK ridotto, a meno che non si debba scrivere un programma portabile è perfettamente inutile).
usa Visual C++ 2008 Express, o se proprio devi Code::Blocks.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 21-09-2008, 13:14   #15
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da 71104 Guarda i messaggi
(smettiamola con la mania dell'open-source: il MinGW ha un Platform SDK ridotto, a meno che non si debba scrivere un programma portabile è perfettamente inutile).
usa Visual C++ 2008 Express, o se proprio devi Code::Blocks.
Code::Blocks utilizza lo stesso identico compilatore di Dev-C++, quindi non migliora niente da quel punto di vista. È solo una versione più aggiornata, ma è lo stesso MinGW di prima.

Che abbia un platform SDK ridotto non importa, già è tanto che ce l'abbia; Dev-C++ è sempre stato l'IDE scelto da chi era agli inizi per smanettare un po' con la compilazione di semplici programmi. In questo direi che MinGW è più che ottimo, gli va anche di lusso.

Che poi Dev-C++ al giorno d'oggi bisogni evitarlo, be', sono d'accordo anche io. Lo sto dicendo da parecchio, se proprio volete Dev-C++, passate almeno a wxDev-C++ che è un po' meno morto come progetto. Code::Blocks è la scelta migliore IMHO.

Ah, ultima frecciatina (): il compilatore Microsoft ti avverte (a volte anche giustamente) che certe funzioni della libreria standard del C sono poco "sicure", e ti invita a sostituirle con versioni alternative che non esistono altrove; IMHO chi inizia non dovrebbe abituarsi a scrivere roba poco portabile, anche se magari "più sicura" (che poi non è nemmeno vero, basta fare attenzione). A rendere il tutto a prova di bomba ci potrà pensare una volta maturato come programmatore.

ciao
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 21-09-2008, 13:35   #16
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi
Code::Blocks utilizza lo stesso identico compilatore di Dev-C++, quindi non migliora niente da quel punto di vista. È solo una versione più aggiornata, ma è lo stesso MinGW di prima.
a parte che Code::Blocks può usare diversi compilatori (anche quelli Microsoft-compatibili credo), comunque lo so: intendevo dire che se proprio proprio Visual C++ gli fa schifo (e già questo è un suo demerito visto che in informatica non esistono religioni) allora è meglio Code::Blocks di Dev-C++.


Quote:
Ah, ultima frecciatina (): il compilatore Microsoft ti avverte (a volte anche giustamente) che certe funzioni della libreria standard del C sono poco "sicure", e ti invita a sostituirle con versioni alternative che non esistono altrove; IMHO chi inizia non dovrebbe abituarsi a scrivere roba poco portabile, anche se magari "più sicura" (che poi non è nemmeno vero, basta fare attenzione). A rendere il tutto a prova di bomba ci potrà pensare una volta maturato come programmatore.
questo è un altro discorso completamente; secondo me sarebbe meglio usare sempre il C++ e mettersi l'anima in pace
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 21-09-2008, 13:40   #17
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da 71104 Guarda i messaggi
a parte che Code::Blocks può usare diversi compilatori (anche quelli Microsoft-compatibili credo)
Anche Dev-C++ tecnicamente potrebbe, se si imposta manualmente il compilatore. Anche se sarebbe uno scempio, e per il resto concordo perfettamente.
Quote:
Originariamente inviato da 71104 Guarda i messaggi
questo è un altro discorso completamente; secondo me sarebbe meglio usare sempre il C++ e mettersi l'anima in pace
Vabbe', io mettevo l'esempio di uno che inizia dal C, anche se pure io a conti fatti (ovvero dopo aver iniziato dal C), dovendo ricominciare, lo farei dal C++.

ciao
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Opera Neon: il browser AI agentico di nuova generazione Opera Neon: il browser AI agentico di nuova gene...
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
Trump blocca le GPU NVIDIA Blackwell in ...
Proiettore XGIMI Horizon in super offert...
Fotovoltaico sulle coperture dei parcheg...
La Cina lancerà la missione Mengz...
Liquido antigelo automobilistico per raf...
Fitbit Charge 6 in forte sconto su Amazo...
L'ESA e la grande tempesta solare: scena...
Anche SUSE punta sull'IA con SUSE Linux ...
Elon Musk, i robot sostituiranno tutti i...
HBM5, DDR6 e NAND da 400 layer: il futur...
'Aggiorna e arresta' non spegne ma riavv...
Ayaneo oltre le handheld: in arrivo uno ...
Progetto STELLAR: l'Europa punta sulle b...
L'auto cattura le sue stesse emissioni: ...
Hisense 55'' 4K Ultra HD 2025 in offerta...
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: 16:27.


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