mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: Ottimizzazione non lineare in C/C++

ciao a tutti
sto cercando un codice in C/C++ per risolvere un problema di ottimizzazione
non lineare: cioè, data una funzione matematica in 100-200 variabili non
lineare, devo trovare quel vettore di variabili che la minimizza.
premetto che sono un pò scarso in programmazione, sono alle prime armi e i
codici che ho trovato su internet o sono in Fortran ( che non conosco
affatto) oppure sono un pò complicati da gestire( per me).
Qualcuno ha a disposizione codice già testato?
Buon Lavoro a tutti
Fabio

 ha scritto nel messaggio
news:adrq6.51280$Xj7.5...@news.infostrada.it...

Se cerchi software matematico prova su:
www.netlib.org
math.nist.gov
gams.nist.gov
Se hai necessità di convertire codice Fortran in C prova con
www.netlib.org/f2c
ciao.

Newsgroup: it.comp.lang.c++
Titolo: Newsletter (gratuita) sul C++

News++ e' una newsletter, che parla di C++ e delle iniziative di FG&A.
Potete abbonarvi gratuitamente (la riceverete via e-mail). Per
abbonarvi, visitate:
http://www.fga-software.com/it/subscribe.htm
------------------------------------------------------------------------
Mario Graziosi
Professional Developer's Journal (PDJ) - 
http://www.edizioni-globali.com
FG&A srl - 
http://www.fga-software.com/it



Newsgroup: it.comp.lang.c++
Titolo: Non funziona!!!!

Per piacere aiutatemi. Ho Linux Mandraxe. Quando compilo programmi scritti in
c++ col compilatore g++ mi dice sempre che non trovo le librerie, mentre queste
librerie ci sono. Ho provato a fare anche -lstdc++ quando compilo ma mi da
sempre errore. Cosa devo fare? Io di Linux non ne capisco niente.
Datemi una mano! Grazie.
-- 
Posted from  [62.98.180.231] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG


Sei OT qui. Prova con it.comp.programmare
-- 
Posted from 
nts-03.mm.eutelsat.org
 [194.214.173.15] 


 
Meglio se prova con it.comp.os.linux.development.
Max

 Meglio se prova con it.comp.os.linux.development.
Meglio se passa a Windows e si installa VC++ cosi compila 2 minuti dopo 
averlo installato.
8-PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
-- 
Luc.



E poi fa due reboot al minuto. :-)
Ciao
Gaetano


 E poi fa due reboot al minuto. :-)
Eh, si purtroppo...
Ogni giorno, pensa, io ne faccio 960 (in 8 ore)...
8-P
-- 
Luc.


Be almeno puo essere usato come clock
 
Ciao
Gaetano.


 E poi fa due reboot al minuto. :-)
Hai una versione di Windows che fa il boot in meno di 30 secondi? Se non
è Windows 3.0 (o meglio se supporta le Win32 e DirectX) la voglio anche
io!
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

 io!
Il primo fallisce dopo 2 secondi e per il successivo grazie al
DualPentium III 1800 finisce in 50 secondi, 8 secondi servono
per tenere premuto il pulsante di spegnimento visto che non c'e'
il tasto di reset.
Ciao
Gaetano.

Newsgroup: it.comp.lang.c++
Titolo: OT Processore

Vorrei aggiornare il mio computer (un Celeron 300) e la parte cruciale
sarebbe il processore: l'alternativa più naturale sarebbe prendere un
Pentium 4 ma un Athlon XP mi tenta. Considerando che lo uso per programmare
con Visual C++ e cmq col C++ in generale vorrei sapere se Visual C++ in
particolare e i compilatori C++ in generale hanno qualche esigenza
particolare (del tipo che potrebbe esserci qualche "strano" funzionamento
con un Athlon). E per quanto riguarda la velocità (per esempio un Athlon
2000+ xp rispetto a un Pentium 4 2 Ghz)?
Grazie e bye bye
Antonio

 ha scritto nel messaggio
news:yks%9.12316$YL4....@tornado.fastwebnet.it...

A parte che è un pò OT, io uso un Athlon XP, Visual C++ e g++, è veloce e
non ho problemi.
Il P4 2GHz è un pò lento, se opti per il P4 prendilo da 2.5GHz in su, con
FSB533.
Newsgroup: it.comp.lang.c++
Titolo: differenza fra date... possibile che non ci sia??

ma non esiste qualche funzione tra l'API di win32 e le MFC capace di
calcolare la differenza (in giorni, minuti, ecc ecc) tra due date?
insomma, tener conto degli anni bisestili, dei mesi di 30 o 31 giorni
(e poi febbraio!!!), ... beh, non c'è una funzione apposita? :)
tnks

Hai provato con CTime e CTimeSpan?
Quest'ultima classe ha degli operatori per fare operazioni con le date e dei
metodi per leggere i risultati.
Ciao
PS: su questo ng si parla di C++ standard. Qui sei un po OT: interventi tipo
il tuo andrebbero postati su it.comp.programmare.win32

Newsgroup: it.comp.lang.c++
Titolo: file

devo far inserire all'utente un nome di un file e crearne uno con quel nome?
come posso fare?
es:
c:\mioprogramma ciao.txt
e mioprogramma deve creare il file ciao.txt
--
gia...@libero.it
HOMEPAGE: 
http://digilander.iol.it/GiansWeb
////////////////////////////
vuoi guadagnare 250.000 al mese?
http://www.intelliad.com/?2A16C131

 e mioprogramma deve creare il file ciao.txt
Grosso modo (non ho provato, ma dovrebbe andare...):
#include <iostream>
#include <fstream>
int main(int argc, char* argv[])
{
    if(argc != 2) {
        std::cerr << "Usare esattamente UN argomento, grazie!\n";
        return 1;
    }
    std::ofstream ilfile(argv[1]);
    if(ilfile.good()) {
        std::cout << "OK, ho creato il file (vuoto, per ora)\n";
    } else {
        std::cerr << "Spiacente, ho dei problemi a creare il file\n":
        return 2;
    }
    return 0;
}
Alex


questo e' un esempio. Si tratta di leggere la riga di comando cercando
il
nome del file, e poi creare il file con quel nome.
#include <fstream>
#include <string>
int main(int argc, char* argv[])
{
 // qui decodifica la riga di comando
 // argv[0] punta ad una stringa che contiene il nome del programma in
esecuzione
 // argv[1] contiene il primo argomento da riga di comando
 // argv[2] il secondo etc.
 // argc contiene il numero di elementi in argv: se vale
 // 1 non ci sono argomenti alla riga di comando
 std::string nome;
 if (argc == 1){
  // qui a nome vine assegnato un valore di default
  nome = "default.dat";
 }
 else{
  nome = argv[1];
 }
 // qui viene creato un file in scrittura, che puo' sovrascrivere
 // un file con lo stesso nome eventualmente presente nella directory
 // dove il programma viene eseguito. Comportamenti diversi vengono
codificati
 // da diverse flag di std::ios : per esempio std::ios::in stabilisce
che il
 // file e' aperto in lettura.
 // string::c_str() e' una funzione membro che ritorna un const char*
che
 // punta alla array di caratteri contenuta nella stringa.
 std::fstream myfile(nome.c_str(), std::ios::out);
 myfile << "Hello, world" << std::endl;
 myfile.close();
 // non e' strettamente necessario chiudere il file, in quanto myfile,
che e'
una variabile automatica
 // creata in main, viene distrutto e quindi chiuso all'uscita dalla
funzione
main.
 // fstream::close() chiude il file ma non distrugge myfile, cosi' puoi
eventualmente
 // controllare se il file e' stato chiuso correttamente, per esempio.
 return 0;
}
Newsgroup: it.comp.lang.c++
Titolo: nomi non accettati

perchč con Borland 5.02 dopo che ho inserito il programmino piů misero non
mi accetta qualsiasi pathname al momento del LOAD e perciň del relativo
salvataggio?

Ciao,
Questo newsgroup si occupa del linguaggio C++ in quanto tale, e non di
aspetti specifici di particolari implementazioni. Per questo non e' il
posto piu' adatto per porre domande specifiche come la tua.
Potresti avere piu' fortuna su uno dei seguenti gruppi:
Per Win32 (95, 98, NT): it.comp.programmare.win32
Per Dos/Win 3.x: it.comp.os.dos
Per Linux:      it.comp.os.linux.development
Per C++Builder: i gruppi borland.public.cppbuilder.*, disponibili sul
                server 
newsgroups.borland.com
 (prevalentemente in 
                inglese, ma si puo' postare anche in italiano)
Grazie,
Nicola Musatti

Newsgroup: it.comp.lang.c++
Titolo: Vector

Ciao a tutti,
è possibile generare un vector di vector? Cioè mi servirebbe una matrice 
ridimensionabile dinamicamente.
Grazie,
    Beppe. 

 è possibile generare un vector di vector?
  std::vector< std::vector< T > >
M

Newsgroup: it.comp.lang.c++
Titolo: domande sul linguaggio...

Che effetto hanno le parole chiave "virtual", "friend" e i namespace?
Ciao.
P.S.: Già conosco molto bene Java!
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ha scritto nel messaggio
news:62Z101Z126Z233Y...@usenet.libero.it...


 
virtual: i metodi definiti come virtual permettono il meccanismo del 
polimorfismo in una gerarchia di classi derivate da una classe base.
friend: una classe B friend di A ha accesso a tutti i metodi e i membri 
della classe A.
namespace: credo assomiglino ai package di Java (non conosco Java).
Comunque se devi imparare il C++, un buon libro puo' chiarirti le idee 
molto meglio di quanto non si possa fare su un NG.
-- 
Roal Zanazzi

Newsgroup: it.comp.lang.c++
Titolo: Colori e caratteri IDE

Per favore, (mi  rendo conto che la mia domanda non č molto aderente a 
questo ng, ma.) qualcuno mi puň spiegare come si fa a cambiare il colore e i 
caratteri nell'IDE di Visual C++ 6?  Grazie  a tutti.
Andy

 questo ng, ma.)
Veramente non lo e' per niente. Cerca su MSDN.
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: [OT] categoria borland.*

ho sottoscritto in ng borland.public.cppbuilder , per vedere se poteva
essere un posto interessante per trovare info, visto che ho cominciato a
smanettare con il builder, ma mi sembra discretamente morto....e temo sia
cosě per tutta la categoria...qualcuno mi sa dire qualcosa di piů?
Raffaele

 temo sia così per tutta la categoria...
Google segnala un elevato livello di attività in quasi tutti i sottogruppi
(che sono una ventina in tutto).
 
http://groups.google.com/groups?q=group:borland.public.cppbuilder
Max

I gruppi della gerarchia borland.* sono privati Borland e non sono 
ufficialmente distribuiti verso il resto di Usenet. Questo fa si che sui 
vari server in giro si possano magari leggere, ma non e' detto che i 
propri messaggi arrivino a destinazione.
Il modo corretto per accedere e' collegarsi direttamente al server 
newsgroups.borland.com
 . Per maggiori informazioni vedi 
http://info.borland.com/newsgroups/
 . Nota che la lista dei gruppi non 
e' aggiornata: scorri con attenzione l'elenco che ti propone il news 
server. Il gruppo che ti interessa di piu' e' probabilmente 
borland.public.cppbuilder.language.cpp .
Ciao,
Nicola

Newsgroup: it.comp.lang.c++
Titolo: Puntatori a funzione in una classe, dov'è l'errore ?

Ciao a tutti,
ho scritto queste righe di codice per scopo didattico ma c'è qualcosa
che non va :
#include <iostream.h>
class Puntfunz
{
        public:
                double som(double);
                double sum(double (*g)(double));
};
        double Puntfunz::som(double a)
        {
                return a+a;
        }
        double Puntfunz::sum(double (*g)(double i))
        {
                double temp=0;
                temp=temp+(*g)(2.0);
                return temp;
        }
int main()
{
        Puntfunz pippo;
        double (*p)(double)= &(pippo.som);     // Qui ho un errore.
Perchè ?
        cout<<pippo.sum(p)<<endl;
}
~
Grazie a tutti,Max









 }
L'errore e' dovuto al fatto che non puoi passare una funzione membro ad
un puntatore a funzione semplice, perche' sono due cose diverse. Hai due
alternative: o cambi la dichiarazione del parametro della funzione
membro sum in modo che prenda un puntatore a funzione, ad es.:
double Puntfunz::sum(double (Puntfunz::*g)(double));
Oppure trasformi la tua funzione membro som in una funzione libera,
ovvero definita esternamente alla classe. Quest'ultima soluzione
funziona anche se dichiari som come funzione membro statica.
Un ultimo consiglio: usa dei nomi piu' differenziati!
Ciao,
Nicola

questo messaggio mi e' arrivato in 7 copie.
A me in 11...
Luc.
Newsgroup: it.comp.lang.c++
Titolo: Documentazione sui .h

Salve a tutti, vorrei sapere se su internet è reperibile(magari in
italiano) del materiale che descriva in maniera approfondita il
funzionamento di tutti (o quasi) i file .h che vengono inclusi con la
direttiva #include...qualcosa che mediante esempi faccia capire
l'utilizzo delle funzioni che definiscono l'interfaccia degli header
file.
grazie per la risposta
Piermarco

Piermarco ha scritto:

Se sei interessato alla libreria standard puoi fare riferimento ai 
reference Dinkum: 
http://dinkumware.com
Per la STL credo che una risorsa molto utile sia 
http://www.sgi.com/tech/stl
-- 
Domenico Testa

Newsgroup: it.comp.lang.c++
Titolo: Come aggiornare lo schermo durante un calcolo "lungo"?





Ciao, sono Salvatore.


Considerate la seguente sezione di 
programma:


 


       int 
i,j,k;


long int contatore=0;


...


for(i=1;i<=1000;i++)


    
for(j=1;j<=1000;j++)
        
for(k=1;k<=1000;k++)
        
        {


        
            /* codice 
*/


        
            
contatore++;


        
        }


...


 


e supponiamo che tale sezione sia scritta in una 
procedura che viene richiamata alla pressione di un bottone


(in Borland C++ Builder si richiama la 
procedura  
void __fastcall TForm1::Button1Click(TObject 
*Sender)
, ad esempio).


Vorrei aggiornare lo schermo in modo da conoscere 
il valore della variabile 
contatore
, ma un'istruzione del 
tipo
 


Label1->Caption=AnsiString(contatore)
 scritta 
subito dopo l'istruzione 
contatore++
 è proibitiva in 
quanto il testo della label verrebbe aggiornato 1 miliardo di volte, con 
conseguente 
ritardo dell'esecuzione del loop. Ho 
provato ad usare l'oggetto 
TTimer 
per aggiornare l'indicazione 
ogni 3-4 secondi (in modo da permettere un calcolo più rapido), ma questo viene 
disabilitato durante il richiamo della procedura. Mi sembra eccessivo l'uso 
dell'oggetto 
TThread 
per attivare un processo parallelo, al 
solo fine di leggere il valore di una variabile.


Qualcuno può aiutarmi?


Grazie!


 


 


 



Considerate la seguente sezione di programma:
Sei Fuori Tema (OT), vai su news:it.comp.programmare.win32
Luc.

"Petrozziello Salvatore":
[...]
Application->ProcessMessages();
"Interrupts the execution of an application
so that Windows can process the message queue."
Ciao,
Alan Solo
ps: non usare l'html, tnx ;)

Newsgroup: it.comp.lang.c++
Titolo: printf con colore

Chiedo scusa come si puo' cambiare colore al testo formattato con una
printf("");  ?

 ha scritto nel messaggio
news:JvUy8.107878$SR5.2...@twister1.libero.it...


Devi utilizzare la cprintf();
che non è standard
--
Lawrence Oluyede
rhy...@myself.com
Newsgroup: it.comp.lang.c++
Titolo: Un aiuto sui puntatori

Salve!
Cerco qualcuno che voglia leggere questo semplice codice e che gentilmente
voglia suggerirmi (sono ai primi passi e non ho ancora la mano sull'uso dei
puntatori) dove sta l'errore e come correggerlo.
Inseriti NOME COGNOME ed ETA in output mi restituisce solo NOME ed ETA.
Grazie.
#include <iostream.h>
#include<conio.h>
struct anagrafica {
  anagrafica(char* n,char* c,int nro) {nome=n; cognome=c; anni=nro;};
  char* nome;
  char* cognome;
  int   anni;
};
void main()
{
    char* inome;
    char* icognome;
    int ianni;
    clrscr();
    cout<<"Nome: "; cin>>inome;
    cout<<"Cognome: "; cin>>icognome;
    cout<<"età: "; cin>>ianni;
    anagrafica uomo1(inome,icognome,ianni);
    anagrafica* p;
    *p=uomo1;
    cout<<p->nome<<" "<<p->cognome<<" "<<p->anni<<"\n";
    cout<<"Premere un tasto per uscire.";
    while(!kbhit());
}


La prima cosa che ti posso suggerire è di usare le std::string per
questo tipo di cose.
Riguardo ai puntatori, stai commettendo un errore abbastanza
grave.
Infatti tu usi solo puntatori (char* inome, char* icognome etc).
Quando cin legge questi valori, va a scrivere in zone di memoria
non allocata.
Quello che devi fare è:
char inome[80];  // <== allochi lo spazio per contenere il nome
char icognome[80];
...
Inoltre un problema simile è presente nella classe anagrafica.
Stai copiando solo i puntatori, non l'intero array.
Quello che devi fare è:
char nome[80];
...
anagrafica(char* n,char* c,int nro)
{
    strcpy(nome, n);
    ...
}
Manlio Perillo

Salve!
Cerco qualcuno che voglia leggere questo semplice codice e che gentilmente
voglia suggerirmi (sono ai primi passi e non ho ancora la mano sull'uso dei
puntatori) dove sta l'errore e come correggerlo.
Inseriti NOME COGNOME ed ETA' in output mi sono restituiti solo NOME ed
ETA'.
Grazie.
#include <iostream.h>
#include<conio.h>
struct anagrafica {
  anagrafica(char* n,char* c,int nro) {nome=n; cognome=c; anni=nro;};

Newsgroup: it.comp.lang.c++
Titolo: da float a array di char

salve a tutti
avrei un piccolo problemino:
devo convertire un float in un array di 4 char, per incapsulare questi 
bytes in un pacchetto ...
il problema è che non posso usare gli operatori << e >> con i float, 
quindi non saprei come fare
c'è una qualche funzione già fatta, o un modo semplice per risolvere il 
problema?
grazie
ciao
nicola

 quindi non saprei come fare
float a;
ofstream output("uscita.out");
output.write (&a, sizeof(float));
o una cosa del genere... controlla la sintassi del membro write della 
classe ofstream che permette di scrivere in binario...
-- 
Hai recensioni nel cassetto di musica, cinema, letteratura,fumetti??
Ascolta e pentiti e se hai tempo vergognati
http://tonysuper.altervista.org

 problema?
union bi_type{
  float f;
  char byte[4];
};
by_type in;
in.f=3.23;
e impacchetti con:
in.byte[1];
in.byte[2];
in.byte[3];
in.byte[4];
SiMoStro

 bytes in un pacchetto ...
float f(1.2345);
char * pc = (char *) &f;
ma devi stare moooolto attento alla portabilità.
-- 
Gerolamo

On Wed, 28 Jul 2004 09:03:59 GMT, SiMoStro <simostro@I_do_not_exixt.com> 
wrote:

grazie, è quello che avevo pensato anche io (dopo però ... :)

Newsgroup: it.comp.lang.c++
Titolo: Algoritmi vari cercasi

1 - Compressore ZIP (spero non siano sotto copyrigth!)
2 - Compressione Mp3
3 - Specifiche formato Wav
4 - Specifiche formato Jpeg ...
se ne avete uno di essi grazie
-- 
ain...@hotmail.com

4 - Specifiche formato Jpeg ...
Non li ho qui nella mia lista di Favourites per controllare
(lo sono al lavoro), ma "a memoria":
1. vari programmi e librerie gratuiti, tutti compresi di
    sorgenti e senza nessun copyright, per lo ZIP, e
    vari documenti in merito, sono reperibili sulla home
    page di InfoZip, ospitata sotto 
www.cdrom.com
2 - 3 - 4. in generale la miglior risorsa di rete per la
    documentazione sul formato dei file e` Wotsit,
    che si trova, mi pare, a 
www.wotsit.org
.
Se poi, ad esempio del Jpeg, ti interessa anche avere
codice (gratuito) funzionante per leggerle e scriverle,
oltre che la descrizione dettagliata del formato, se ne
trova ad esempio su 
www.codeguru.com
 o sulla home
page di Julian Smart (reperibile a sua volta dai pointer
che trovi su codeguru).
Alex
Newsgroup: it.comp.lang.c++
Titolo: Interfacce riusabili

Dunque... ho fatto un programmino scemo in visual c++
Adesso vorrei ricominciare da capo cannibalizzando le cose che mi servono da
questo primo programma.
E' facile, prendo i singoli files .h e .cpp e li aggiungo al progetto
(E' un buon approccio o si può fare meglio?)
Però ho una difficoltà nel riusare le Dialog.
Posso recuperare la classe semplicemente aggiungendo i file .h e .cpp ma
poichè la finestra è stata generata con l'application wizard non so come
recuperare i dati della dialog.
Ho provato ad aggiungere il file .rc al progetto, ad importarlo ma non
riesco nel mio intento,,,
Allora ho provato a ricreare una dialog uguale ed associarla alla classe che
ho incluso al progetto non a crearne una nuova come normalmente chiede...
Solo che il wizard non mi include tra le classi a cui posso associare la
dialog proprio quella che ho inserito nel progetto.
Ho anche un'altra domanda da fare...(salto di palo in frasca lo so...
)     )
Dunque... se io posso ereditare una classe, ha un senso annidare classi in
altre classi.
Le due cose sono lo stesso concetto espresso semplicemente in maniera
diversa?
Ho il dubbio che la domanda che ho posto sia poco chiara... e probabilmente
lo è perchè io stesso ho delle idee confuse di quello che sto parlando...
Vi chiedo solo una dritta veloce... poi cammino con le mie gambe ... grazie!
Carlo

diversa?
Se erediti, almeno che non sia un ereditarietà di tipo private,
l'interfaccia della classe base diventa parte dell'interfaccia della classe
derivata, salvo override. Se "annidi" una classe in un'altra, allora fai del
contenimento: ciò ti permette di continuare ad usare le funzioni membro
della classe annidata, ma solo per l'implementazione della tua classe; non
esponi l'interfaccia della classe annidata all'esterno della tua classe.
Concettualmente, quindi, inheritance e contenimento, sono due cose distinte.
Andrea

diversa?
Sono due cose orizzontali...
l'annidamento di classi lo si esegue perche` non si vuole rendere visibile
una classe all'esterno di un'altra, o perche` la classe annidata non
e` pensata per creare oggetti indipendenti dall'altra classe .
La derivazione e` invece il modo in cui la OOP ti consente il riuso del codice.
Paolo
-----------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------------------------

 dialog proprio quella che ho inserito nel progetto.
devi andare nella cartella del tuo progetto ed eliminare il file .clw
esempio mioprg.clw poi andare su class wizard lui cerchera il sudetto file
non lo trovera e ti chidera di generarne uno nuovo si posizionera nella
cartella del progetto dovrai selezzionare tutti file *.h e *.cpp che con
tengono le classi che ti interessano poi premere ok e come per magia vedrai
tutte le classi che non cerano prima
oppure se vuoi puoi editare manualmente il file clw
fammi sapere se cè qualcosa che non va e anche se ci 6 riuscito sono a tua
disposizione
per il resto gli altri anno gia risposto ciao  
DeadB...@hotmail.com
Newsgroup: it.comp.lang.c++
Titolo: Newbie vs Singleton

vorrei scrivere un singleton non inizializzato staticamente, ma creato solo
alla prima richiesta dell'istanza, e pensavo di utilizzare un puntatore per
determinare se l'unica (sperata) istanza e' stata gia' creata oppure no.
Ma non funziona... :-) dal costruttore ci passa effettivamente solo una volta,
ma non riesco ad ottenere val correttamente inizializzato: chissa' quindi dove
va a finire l'istanza che crea. Cosa ho sbagliato?
#include <iostream>
using namespace std;
class Single {
      static Single *instance;
      int val;
      Single(){
         cout << "nel costruttore..." << endl;
         val = 1;
      }
      operator=(Single&){}
      Single(Single&){}
   public:
   static Single getInstance(){
      if(!instance){
         instance = new Single();
      }
      return *instance;
   }
   void printValue(){
      cout << "value: " << val << endl;
   }
};
Single *Single::instance = 0; // definizione
void main(){
 
   Single::getInstance().printValue();
   Single::getInstance().printValue();
}
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

    }
...che ti serve qui perche' restituisci il tuo singleton per valore.
Solo che restituendolo per valore proprio tu generi delle copie (per di
piu' errate) del tuo singleton, violando il senso del pattern. Ti
suggerisco di ritornare un puntatore a "instance".
Ciao,
Nicola

> suggerisco di ritornare un puntatore a "instance".
...
static Single *getInstance(){
   if(!instance){
     instance = new Single();
   }
   return instance;
}
...
e cosi' funziona! grazie mille! ma e' corretto scrivere un singleton in quel
modo? (retaggio di quelli che scrivevo in Java)
cioe': e' "bello"? 


 cioe': e' "bello"?
Questa e' l'implementazione "classica" del pattern Singleton, presentata
sul libro "Design Patterns" di Gamma, Helm, Johnson & Vlissides.
Dopodiche' fiumi di inchiostro sono stati spesi per disquisirne i pro ed
i contro.
Dipende da cosa intendi farne esattamente.
Ciao,
Nicola

> Dipende da cosa intendi farne esattamente.
ho capito. cmq ho trovato il thread "permettere una sola istanza di una classe"
iniziato a gennaio 2001 (31 post): ora ci do' un'occhiata
grazie e ciao, 
Gio


 solo alla prima richiesta dell'istanza, 
class Singleton {
        Singleton() { ... }; // ctor privato
        // copy ctor e operator non definiti
        Singleton(const Singleton&);
        Singleton& operator=(const Singleton&); 
public:
        static Singleton& Instance() {
                static Singleton s;
                return s;
        }
};
void foo()
{
        Singleton bar& = Singleton::Instance();
        ...
}
ciao Anto
-- 
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.73, higher than 99% of all previous test takers.
C Language: 3.79, higher than 92% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it
Newsgroup: it.comp.lang.c++
Titolo: Problema con stringhe

Ciao!
Ho deciso di fare una mia classe Stringa, in modo che venga trattata un po'
come in Pascal, sovrapponendo qualche operatore, come il '+' e fancendo
altre cose utili con le stringhe.
Purtroppo ho un problema... Come faccio a restituire la stringa all'utente
per una lettura?
Se gli restituissi il puntatore, lui potrebbe modificare il contenuto...
In più in certi metodi uso una stringa di appoggio, che andrebbe poi
restituita all'utente (ad esempio nella somma di due stringhe, ne uso una
che le conterrà entrambe); purtroppo, quando il metodo finisce, la memoria
che conteneva la stringa creata viene deallocata, quindi anche restituendo
il puntatore, questo punta ad una zona non allocata..
Qualcuno può aiutarmi?
Grazie!
--
Alessandro Monopoli
----------------------------
"Andiamo donna, andiamo a pregare.
Preghiamo Gesù per le nostre anime
di femmine deboli, viziose e peccatrici"
Stephen King, "Carrie"
----------------------------

 il puntatore, questo punta ad una zona non allocata..
Un oggetto temporaneo viene restituito solo alla fine della *complete
expression* in cui viene generato, quindi non dovresti avere problemi
restituendo (per valore, *naturalmente*) un oggetto del tuo tipo-stringa.
Stringa Stringa::operator+(const Stringa& laltra)
{
    Stringa ilrisultato;
    // poni in ilrisultato tutto quel che vuoi
    return ilrisultato;    // ritorno by-value
}
E il codice-cliente potra` fare
    Stringa prima, seconda, totale;
    // assegna in qualche modo prima e seconda
    totale = prima + seconda;
Alex

il puntatore, questo punta ad una zona non allocata..
Restituire per valore?
Devi capire quando e quanto e` importante l'efficenza e agire di 
conseguenza. In generale un operator+ dovrebbe sempre restituire
per valore.
Paolo
--------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
--------------------------------------------------

 inclusa nelle librerie standard del C++?
E' solo per esercitarmi! Cosě imparo come si fa e se mi serve, poi lo so
fare :)
Ciao!
--
Alessandro Monopoli
----------------------------
"Andiamo donna, andiamo a pregare.
Preghiamo Gesů per le nostre anime

Newsgroup: it.comp.lang.c++
Titolo: strano : file .h e .cpp

Supponiamo di avere una classe c la cui interfaccia si trova in Classe.h e
la cui implementazione si trova in Classe.cpp al cui interno includo la
libreria Classe.h, mi hanno insegnato che se
voglio usare la mia classe devo includere nel programma la sua interfaccia
nel mio caso Classe.h ovvero nel mio form principale metto
#include "Classe.h"
quando compilo mi da errore come se per lui Classe.h e Classe.cpp non
fossero legate luna all'altra mentre se implemento tutto nel .h non mi
genera errori
se puo aiutare questo è l'errore
[Linker Error] Unresolved external 'Classe::inserisci()' referenced from
C:\PERCORSO\UNIT.OBJ

C:\PERCORSO\UNIT.OBJ
ma poi devi linkarli
unboffable% cat dummy.h
#ifndef DUMMY_HPP_INCLUDED
#define DUMMY_HPP_INCLUDED
struct Dummy{ void print( const char* who) const; };
#endif
unboffable% cat dummy.cpp
#include "dummy.h"
#include <iostream>
void
Dummy::print(const char* who)
 const
{
 std::cout << "Hello " << who << std::endl;
}
unboffable% cat main.cpp
#include "dummy.h"
int main()
{
 Dummy dummy;
 dummy.print("world");
}
unboffable% g++ -c main.cpp -o main.o
unboffable% g++ -c dummy.cpp -o dummy.o
unboffable% g++ -o out dummy.o main.o
unboffable% ./out
Hello world
sbirish

Newsgroup: it.comp.lang.c++
Titolo: funzione di hashing

utilizzando la struttura dati hash_map con chiave dei nomi di variabili
C++ quale potrebbe essere una buona funzione di hashing?
io avevo inizialmente pensato a una lungezza_nome_variabile modulo 6,
considerando a ppunto che la lunghezza media di un identificatore in c++
sia 6.
se qualcuno ha idee e suggerimenti sono bene accetti!
grazie in anticipo
		pierpaolo

sia 6.
Una funzione di hashing dovrebbe fare esattamente l'opposto...
ovvero tornare dei valori i piu' "casuali" possibili per
l'insieme delle chiavi. Un sistema abbastanza comune e'
quello di prendere un xor dei caratteri della chiave con
un accumulatore rotante... es:
int Hash(std::string s)
{
  int k=s.size();
  int acc=0;
  const char *rp=s.data();
  while(k--) acc=(acc<<3)^(acc>>13)^*rp++;
  return acc & 65535;
}
Ho anche visto alcune librerie che invece di considerare
tutti i caratteri ne considerano al massimo N presi
su tutta la stringa (non i primi N cioe').
Per la gestione della tabella di trasposizioni di gchess
(un programma di scacchi che ho scritto assieme ad un
amico) ho addirittura scelto dopo qualche esperimento di
usare qualcosa come:
int Hash(std::string s)
{
  int k=s.size();
  int acc=0;
  const char *rp=s.data();
  while(k--) acc^=HTab[k&7][(*rp++)&255];
  return acc;
}
dove HTab[8][256] contiene valori casuali.
HTH
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

 
grazie, io pensavo che l'unico obbiettivo fosse avere una distribuzione
piu uniforme possibile dei valori mantenendo basso il numero di valori
possibili ritornati dalla funzione di hashing, ma usando una funzione
dello xor dei caratteri il numero di valori immagine sarebbe 256 se non
erro. la mia domanda qundi e' come posso calcolare il rapporto ottimale
tra numero di elementi e numero di valori tornati dalla funzione di
hashing?
Newsgroup: it.comp.lang.c++
Titolo: il codice ascii del tasto premuto con borland c++ builder 3

come lo trovo???
grazie a chi risponde..........

Nell'evento OnKeyPress c'e' la variabile Key che e' di tipo char. Ma
spiegati meglio, il tasto dov'e' che lo premi?
--
Stefano Tempesta
PC Service Software
http://www.tempesta.cc.st
temp...@tin.it

 spiegati meglio, il tasto dov'e' che lo premi?
cerco di essere piu' chiaro.........
in effetti l'oggetto non era azzeccatissimo...........
vorrei sapere data una certa lettera qual' e' il suo codice ascii.......
oppure il contrario dato il numero ricavare le lettera.............
grazie per la pazienza.........

Se non riesci a a procurarti una tabella Ascii, fai cosě:
1) c'č una funzione apposita in XL
2) con la mappa caratteri di win, vedi sulla barra di stato il codice
alt+XXX
--
DoS
minic...@cheerful.com

 alt+XXX
No non ci saremo capiti .......
sono certo che esiste una funzione che mi da il codice ascii del
tasto.......e viceversa.......
avete presente le funzioni chr() e asc() di visual basic???
ciao e grazie.....

>sono certo che esiste una funzione che mi da il codice ascii del tasto
Non esiste per il semplice fatto che il valore numerico del tasto e' il
codice ASCII. Es:
int ascii = 'A'   // ascii == 65
Stefano Tempesta
PC Service Software
www.tempesta.cc.st
temp...@tin.it

 int ascii = 'A'   // ascii == 65
OK grazie intendevo una soluzione simile.........
Newsgroup: it.comp.lang.c++
Titolo: funzione getnumero in albero binario

Salve a tutti, sono riuscito a far funzionare il mio alberello, solo
che non riesco ad implementare una funzione di get... ovvero nel caso
specifico che restitutisca il campo numero di un generico nodo
dell'albero o foglia che sia... vi copio sotto l'header file della mia
procedura...ci ho provato in diversi modi , ma nulla mi dite come posso
implementare la getnumero  ? grazie a tutti...
#ifndef _ALBEROBINARIO_H_
#define _ALBEROBINARIO_H_
/*
  Classe Albero Binario.
  La classe implementa i metodi di aggiunta, eliminazione e ricerca di
un
  elemento. Inoltre permette la visita in ordine, preordine e
postordine. E'
  infine implementato il costruttore di copia.
  L'implementazione di tutti i metodi è basata su appositi metodi
ricorsivi.
*/
struct Nodo; //Forward declaration
typedef Nodo* PNodo;
typedef string TElem; //L'albero contiene interi
struct Nodo { //Struttura Nodo
  int numero;
  TElem cliente;
  TElem settore;
  PNodo sin;
  PNodo des;
};
class AlberoBinario {
private:
  PNodo root; //radice dell'albero
  // Metodi ricorsivi di supporto
  void _CopiaAlbero(PNodo& dest, const PNodo& source);
  void _Svuota(const PNodo& n);
  void _AggiungiElem(PNodo& n, const TElem& cliente,const TElem&
settore,const int num);
  void _Sostituisce(PNodo& n, PNodo& p);
  bool _InAlb(const PNodo& n, const TElem& settore,const int num)
const;
  void _Elimina(PNodo& n, const TElem& settore,const int num);
  void _InOrdine(const PNodo& n) const;
public:
  AlberoBinario(); //costruttore senza parametri
  AlberoBinario(const AlberoBinario& a); //costruttore di copia
  ~AlberoBinario(); //Distruttore
  void AggiungiElem(const TElem& cliente,const TElem& settore, const
int num);
  bool InAlb(const TElem& settore, const int num) const;
  void Elimina(const TElem& settore, const int num);
  void Svuota();
  void InOrdine() const;
/////////////////////////////////////////////// questa è la funzione
che non riesco ad implementare...
int getnumero();
//////////////////////////////////////////////
};
#endif /* _ALBEROBINARIO_H_ */


int getnumero(){
return Nodo.numero;
PS:glielo dico al professor Vito!
}
Newsgroup: it.comp.lang.c++
Titolo: programma sui tag

 venga salvato il file che comando si scrive? grazie
NB: vorrei che mi comparisse la finestra vuota non con la scrittura.....il
programma e sui tag
--
"La parola č un'ala del silenzio..."
Pablo Neruda

 scrittura.....il programma e sui tag
Prova a fare una domanda in italiano.
-- 
Costantino Grana 

"Costantino Grana" <n...@invalid.inv> ha scritto nel messaggio
news:eqo6ev$qr1$1...@news.cineca.it...

che comando c'è perche venga salvato in un file? c++

  raffy ha scritto:

Forse ho capito la domanda.
Se volevi dire: "Come si fa a inserire in un file il risultato di 
un'istruzione printf?", la risposta e' che ci sono due possibilita':
* Sostituire l'istruzione printf con l'istruzione fprintf. Dovrai prima 
aprire il file con fopen e dopo chiuderlo con fclose.
* Redirigere l'output standard dal programma chiamante. Usando 
l'interprete di comandi di DOS, Windows, Unix, o Linux, puoi usare la 
sintassi: nome_programma >nome_file
-- 
     Carlo Milanesi
 
http://digilander.libero.it/carlmila
Newsgroup: it.comp.lang.c++
Titolo: Libreria per accesso a database

Ciao,
	per la mia tesi di laurea dovrei scrivere un modulo C++ che
accede ad un database abbastanza semplice (3 tabelle e qualche indice).
Attualmente sto usando Borland C++ Builder 4 Enterprise che mette a
disposizione uno strumento (Borland Database Engine) per questi scopi.
Il problema e' che le librerie apposite sono progettate per un uso 
visuale, cioe' con interfaccia al DB sotto forma di Form, Grid e cosi'
via.
Dato che il mio modulo di gestione del database e' inglobato in un
metodo CORBA di un server, non avra' interfaccia utente, l'accesso ad
esso avverra' solo attraverso chiamate di metodi da parte dei client.
Il problema e' che l'uso non "visuale" degli strumenti Borland,
specialmente della VCL e' difficile e scarsamente documentato.
Per cui mi chiedevo se esiste una librera C++ non "visuale" per accedere
a Database ( anche via ODBC ) possibilmente freeware da poter
utilizzare.
O se c'e' un aproccio migliore a tutto il problema.
Grazie fin d'ora
Andrea

Ciao,
	per la mia tesi di laurea dovrei scrivere un modulo C++
che accede ad un database non complicato ( 3 tabelle e pochi indici ).
Attualmente sto usando Borland C++ Builder 4 Enterprise che mette a 
disposizione alcuni strumenti per questo (Borland Database Engine e
VCL).
Il problema e' che questi strumenti sono pensati per sviluppare
applicazioni visuali, cioe' che mettano una interfaccia utente
al database, mentre il mio modulo e' inglobato in um metodo CORBA di
un server e l'accesso al db avverra' solo attraverso chiamate di metodi
CORBA, appunto, da parte dei client.
L'utilizzo per questi scopi della VCL e' difficile e, soprattutto,
scarsamente documentato, per cui pensavo di cercare una libreria
C++ per accesso a database, anche via ODBC, possibilmente freeware.
Qualcuno ha suggerimenti da darmi ?
Anche riguardo ad approcci differenti al problema accetto volentieri
consigli.
Grazie fin d'ora.
Andrea

In realta' in questo gruppo sei OT, perche' non tratterebbe di problemi
relativi a piattaforme specifiche. In ogni caso le classi TDatabase e
TQuery della VCL sono tutto quel che ti serve per accedere ad un
database, senza bisogno di usare componenti visuali.
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: realizzare una mia funzione per fare il cicli.

Ho visto sulle librerie LEDA, una funzione foreach che altro non e' che un
ciclio for customizzato, non potendo accedere ai sorgenti non posso vedere
il codice utilizzato per realizzare funzioni di tale; esiste un modo in c++
per realizzare una mia funzione di ciclo es.:
    miociclo(char a; ..;..)
    {
            ....
            ....
     }
Grazie per l'attenzione.

 per realizzare una mia funzione di ciclo es.:
Esistono diverse funzioni della libreria standard che permettono di
lavorare in modo 'intelligente' sui contenitori. In particolare esiste
for_each
definita in 'algorithm' che *non modifica* gli elementi (ma ci fa sopra
un'azione), oppure
oppuere ci sono quelli della famiglia transoform (che invece li modifica).
Per usarle devi usare gli iteratori.
Stroustrup nel suo libro la definisce con:
template<class In, class Op> Op for_each(In first, In last, Op f){
    while(first!=last) f(*first++);
    return f;
}
Nota bene che for_each potrebbe in effetti modificare la sequenza, a
seconda della funzione che passi.
Ad ogni modo suggerisco di leggere lo Stroustrup per un'approfondita
trattazione dei vari algoritmi standard (sono tanti e sono comodi).
-- 
RiK0
[ non credo negli schemi non vincenti ]
[     two is an odd prime number.     ]

Newsgroup: it.comp.lang.c++
Titolo: Cambiare il font in un bottone

Salve a tutti.
    Qualcuno saprebbe dirmi come cambiare il font in un bottone ?
Ho provato nel seguente modo:
CButton* pBut = (CButton*) GetDlgItem(IDC_MYBUTTON);
CDC* pDC = pBut->GetDC();
CFont font;
font.CreatePointFont(120, "Arial");
CFont* pOldFont = pDC->SelectObject(&font);
pDC->TextOut(2, 2, "MyText");
pBut->Invalidate();
pBut->SelectObject(pOldFont);
pBut->ReleaseDC(pDC);
ma senza nessun risultato.
Grazie.
                                            Marco Altese

 
Devi mandare al bottone un messaggio WM_SETFONT.  
Antonello
-- 
// ------------------------------------------------------------
// Antonello Salvatucci
// Software Developer, Technical Writer
// LEGO A/S SPU-Darwin, Kloevermarken 120, 7190 Billund DENMARK
// 
// 
+45 75 33 22 33 ext. 5186
       antonello at digi. lego. com
Newsgroup: it.comp.lang.c++
Titolo: Help:C++Builder componente DrawGrid

Premetto di essere un un novellino di c++Builder,
ho il seguente problema,
vorrei visualizzare su una griglia delle immagini grafiche, il componente
DrawGrid, sembrerebbe fatto apposta per me,
Dopo aver dimensionato in fase di progetto tramite le proprieta' Height e
Width Fixed Columns e Rows, dove si mette il riferimento al contenuto e come
si fa a farlo apparire.
Ho visto che tramite l'evento DrawCell si puo' utilizzare una routine ad Hoc
esterna, e va bene, ma non c'e' qualcosa di piu' semplice come con gli
oggetti Grid del Visual Basic.
Grazie per eventuali aiuti.
Fabio

In effetti la TDrawGrid ti mette a disposizione solo una griglia, poi la
modalita' con cui vuoi disegnarci dentro la devi decidere tu. Ad ogni modo,
e' molto semplice: imposta la property DefaultDrawing a false, in modo da
controllare il paint delle celle, usa un oggetto TImageList per contenere
tutte le immagini che vuoi e ridefinisci l'evento OnDrawCell
void __fastcall TForm1::DrawGrid1DrawCell(TObject *Sender, int Col,
      int Row, TRect &Rect, TGridDrawState State)
{
    Graphics::TBitmap *bitmap = new Graphics::TBitmap;
    static int imgindex = 0;
    if (imgindex < ImageList1->Count) {
        ImageList1->GetBitmap(imgindex, bitmap);
        DrawGrid1->Canvas->Draw(Rect.Left + 2, Rect.Top + 2, bitmap);
    }
    imgindex++;
}
--
Stefano Tempesta
PC Service Software
http://www.tempesta.cc.st
s.tem...@pcs-online.it
Newsgroup: it.comp.lang.c++
Titolo: Gestione seriale in Visual C++5.0

Salve, mi chiamo Daniele De Luca.
Da poco ho cominciato a lavorare con Visual C++5.0, ed ora vorrei "convertire"
un mio programma scritto in BorlandC++3.1 sotto DOS.
Per quel che riguarda l'interfaccia e la gestione dell' I/O sui files sto procedendo
bene, ma sulla gestione della seriale non so ancora nulla.
Come posso fare ? posso linkare (modificandoli) i mie files con le routines della
seriale (in Borland sotto DOS) o devo rifarmi tutto? o esiste qualcosa di già fatto?
Sto brancolando, aitutatemi.
Grazie mille.
Ciao.
Daniele.
--
Automatic posted from 
maggiore.dsnet.it
 [195.32.0.15]
via Mailgate Server - 
http://www.mailgate.org

seriale (in Borland sotto DOS) o devo rifarmi tutto? o esiste qualcosa di
già fatto?
La gestione della seriale è cambiata pesantemente nel passaggio da windows
3.1 a win 32 (ti lascio immaginare da DOS!).
Puoi accedere a una porta seriale attraverso le stesse funzioni che utilizzi
per i files (OpenFile, Read/WriteFile), oltre a funzioni specifiche per
impostare i parametri della porta.
Se devi utilizzare un modem ti consiglio di considerare l'utilizzo delle
TAPI, sono un'interfaccia ad "alto livello" che permettono di gestire la
connessione via modem (anche in voce) senza utilizzare direttamente i
comandi "AT" e utilizzando la configurazione modem di '95.
Buona fortuna!
---
Valter Minute
min...@fortech.it
 (the reply address of this message is invalid)
---
Are you looking for a good freeware ScreenSaver? Try FOYD!
http://www.winsite.com/info/pc/win95/desktop/foyd1395.zip/
if you want, I can send you the (free) C++ source code.

...
Salve, mi chiamo Daniele De Luca.
Da poco ho cominciato a lavorare con Visual C++5.0, ed ora vorrei
"convertire"
un mio programma scritto in BorlandC++3.1 sotto DOS.
Per quel che riguarda l'interfaccia e la gestione dell' I/O sui files sto
procedendo
bene, ma sulla gestione della seriale non so ancora nulla.
Come posso fare ? posso linkare (modificandoli) i mie files con le routines
della
seriale (in Borland sotto DOS) o devo rifarmi tutto? o esiste qualcosa di
già fatto?


Newsgroup: it.comp.lang.c++
Titolo: HELP !!! - Gestire porta seriale in C++Builder 4

Ciao a tutti, come si gestiscela porta seriale in C++Builder 4. Dove posso
trovare qualche esempio e documentazione ????
Grazie.

Ciao,
Questo newsgroup si occupa del linguaggio C++ in quanto tale, e non di
aspetti specifici di particolari implementazioni. Per questo non e' il
posto piu' adatto per porre domande specifiche come la tua.
Potresti avere piu' fortuna su uno dei seguenti gruppi:
Per Win32 (95, 98, NT): it.comp.programmare.win32
Per Dos/Win 3.x: it.comp.os.dos
Per Linux:      it.comp.os.linux.development
Per C++Builder: i gruppi borland.public.cppbuilder.*, disponibili sul
                server 
newsgroups.borland.com
 (prevalentemente in 
                inglese, ma si puo' postare anche in italiano)
Grazie,
Nicola Musatti
Newsgroup: it.comp.lang.c++
Titolo: Albero bilancito con la libreria STL?

Sto studiando il C++ da un mesetto, conosco il C.
Mi sono trovato a dover fare un albero bilanciato e io ho iniziato a
farlo come lo facevo in C cioe` usando le strutture e i puntatori, ma mi
e` stato consigliato di usare la libreria STL del C++ perche` avrei
fatto prima e avrei potuto gestirlo meglio.
E` un consiglio giusto? Se si come faccio a farlo???
Aiutatemi.... Vi ringrazio tanto
Giovanni

E` un consiglio giusto? Se si come faccio a farlo???
La libreria standard contiene alcuni contenitori gia' fatti che
internamente usano un albero bilanciato (o per meglio dire che
garantiscono le stesse prestazioni di un albero bilanciato).
Il piu' comune e' std::map... un esempio di uso e'
  #include <iostream>
  #include <fstream>
  #include <map>
  #include <string>
  int main()
  {
    std::ifstream is("data.txt");
    std::map<std::string,int> wordcount;
    //
    // Questo contenitore e' (spesso) un albero
    // bilanciato i cui nodi contengono come
    // chiave di ricerca una stringa e come
    // valore un intero.
    //
    while(is)
    {
      std::string w;
      is >> w;
      if (is)
      {
        // L'istruzione seguente ricerca l'elemento
        // con chiave w (e non lo trova aggiunge
        // un nuovo elemento con valore inizializzato
        // a 0). L'operatore [] restituisce il valore
        // come reference (ovvero modificabile) e
        // viene quindi incrementato con ++.
        wordcount[w]++;
      }
    }
    // Il codice seguente elenca tutti gli elementi
    // del contenitore in ordine di chiave e ne
    // stampa la coppia chiave (first) / valore (second).
    std::map<std::string,int>::const_iterator i,e;
    for(i=wordcount.begin(),e=wordcount.end(); i!=e; ++i)
    {
      std::cout << i->first << " = " << i->second << "\n";
    }
    return 0;
  }
Esistono anche altri tipi di contenitori; ad esempio
std::set e' grossomodo un albero di sole chiavi.
Se i contenitori STL sono adatti o meno dipende molto da
cosa devi fare con l'albero...
HTH
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

Newsgroup: it.comp.lang.c++
Titolo: Guida C++

h

C

Newsgroup: it.comp.lang.c++
Titolo: Versioni di Borland C++ Builder 3

Ciao,
qualcuno conosce la differenza fra le tre versioni del Borland C++ Bulider 3
(Standard,Professional,Client\Server)  ?
Esiste una versione del C++ Builder 3 localizzata in italiano ?
Ugo

La standard ti fornisce tutto l'occorrente per lavorare. La pro aggiunge i
sorgenti delle librerie e qualche strumento aggiuntivo avanzato. La C/S
possiede i tools per il team computing e il server SQL Interbase nella
versione multiutente (nelle altre č monoutente per simulare un DBase C/S)