Newsgroup: it.comp.lang.c++
Titolo: Uccidere un uccellino con un CANNONE!

Buongiorno a tutti.
Vorrei una libreria che mi permetta di gestire una lista di due
dimensioni
Non ho bisogno, come ho letto in qualche post, di un super database che
gestisca
qualsisi cosa alla velocità della luce per applicazioni ipercritiche.
Esiste? Con relativa documentazione in txt da qualche parte su internet?
Uso in questo momento VC++ 5.0 e magari già c'e' sulle MFC.
Sapete come si chiama? Grazie!

dimensioni
Non mi e` chiaro cosa intendi, ma il template std::list<> (previsto
dallo standard C++, implementato anche in particolare dal VC++5
che nomini) ti permette di fare liste di qualsiasi cosa, in particolare
liste di liste di ...
Ad esempio, per una lista di liste di interi:
    #include <list>
    using std::list;
    typedef list<list<int> > lista2dint;
    // attento a ricordare di porre uno spazio fra i due '>'...!
Alex

dimensioni



Ciao e grazie per l'interessamento.
Io qualcosa l'ho trovato : Clist
che ne dici ? potrebbe andare bene?
almeno con la lista non dovrei avere problemi di
lunghezza.
Ciao
Carlo

 Alex
TNX!
Ma senti ...se io usassi la classe CList per gestirmi le liste di oggetti
generici?
Dici che faccio male o è la classe sbagliata?

Dici che faccio male o è la classe sbagliata?
Non mi sembra il caso di legarsi inutilmente ad una libreria
proprietaria (MFC) per funzionalita` presenti anche, e meglio,
nella libreria standard del linguaggio C++.  Le MFC, cosi` come
tutte le librerie "fondazionali" anche solo un poco datate, prevede
classi (come CString, CList, ecc ecc) che duplicano quelle
standard, presenti nelle librerie standard, solo per ragioni
storiche: MFC e simili esistevano molto prima delle librerie
standard del linguaggio, quindi dovevano fornire questo tipo
di funzionalita`, altrimenti l'utente avrebbe dovuto far senza
(o farsele da solo); e ormai, naturalmente, quelle librerie
fondazionali che sono sopravvissute sino ad oggi debbono
continuare a supportare queste vecchie classi per evidenti
ragioni di compatibilita`.
Ma la libreria standard del C++, per tutto quello che offre, e`
progettata in modo geniale -- magari non facilissima da usare,
ma veramente brillante, con caratteristiche di prestazioni e di
funzionalita` davvero superbe (il disaccoppiamento fra
contenitori e algoritmi, attraverso il tramite degli iteratori, e`
la radice di tutta l'impostazione).
Perche`, dunque, non usarla...?
Alex

Sono d'accordo in tutto e grazie per dirmi i  comandi standard..
Adesso però ho un problema:
Supponiamo che io voglia fare una lista di oggetti qualsiasi.
Quello che sono riuscito a trovare è:
template<class T, class A = allocator<T> >    class list {etc...}
Dunque io non capisco molto...
Ho provato a scrivere :
#include <list>
using namespace std ;
typedef list<candidato> LISTA;
Quando dichiaro una lista scrivo infine
LISTA listacandidati;
Naturalmente mi da errore... e intuisco che sbaglio ma non arrivo a capire
dove
Il manuale mi parla di un allocator<T> che sia quello il punto?

Il manuale mi parla di un allocator<T> che sia quello il punto?
No, l'allocatore standard va benissimo nel 99.9% dei casi, e
sostituirlo (per il restante 0.1%) e` operazione delicata, e
avanzata assai.
Alex

Esiste? Con relativa documentazione in txt da qualche parte su internet?
Cosi' ad occhio vuoi una lista di liste di QUALCOSA.
Usa quelle delle Standard Template Library, se non ricordo male
c'e' vector (e' tipo array!), altrimenti c'e' anche la list (che
dovrebbe fare al caso tuo).
De' guarda te' se riesci ad uccidere l'uccellino :)))
Ciao Manuel.

Allora...
ho provato a eseguire il programmino che tu mi hai dato e
il compilatore VC++5.0 mi manda una paccata di 32 insulti
il primo dei quali recita in questo modo
C:\Programmi\DevStudio\VC\INCLUDE\list(272) : error C2784: 'bool __cdecl
std::operator ==(const class
std::list<`template-parameter-1',`template-parameter-2'> &,const class
std::list<`template-parameter-1',`template-parameter-2'> &)' : could not deduce
template argument for 'const class
std::list<`template-parameter-1',`template-parameter-2'> &' from 'class
candidato'
il programmino era :
#include <list>
class candidato {
};
typedef std::list<candidato> LISTA;
LISTA listacandidati;
int main()
{
    return 0;
}
Ho l'impressione che la fetecchia si aspetti un secondo parametro

 Il manuale mi parla di un allocator<T> che sia quello il punto?
Non credo.
EMG

 in un esempio-giocattolo, il piu` piccolo possibile.
Anche a me sembra naturale procedere in questo modo. Ma perché, invece,
la maggior parte dei programmatori (almeno a mia esperienza) sembra non
capirlo e pretenda di trovare un errore all'interno dell'intera
applicazione che sta scrivendo? Forse pigrizia?
EMG

Ho l'impressione che la fetecchia si aspetti un secondo parametro
operator== naturalmente si aspetta due parametri (i due "robi" da 
confrontare per eguaglianza), ma il punto e` che questo microscopico
programma non lo usa, non ne ha bisogno, e in VC++5 SP3 compila,
come e` giusto, senza problemi.
Alex