Newsgroup: it.comp.lang.c++
Titolo: Standard Template Library: come si usa? (quasi newbie)

Salve, ho dato uno sguardo ai file della STL del BCB++
e ho visto che è piena di cosettine interessanti, tipo gli
algoritmi di sorting già pronti e tutta una serie di cosettine
per le liste... Solo che non sono riuscito a usarne nemmeno
una :-(
Per esempio: dato
int v[1000]={ /* ecc. ecc. */ };
come devo fare per riaverlo ordinato?
Più in generale, come si usano gli algoritmi e le classi STL?
Gli esempi di template sullo Stroustrup erano chiari, ma non
mi aiutano granchè in questo caso... e l'help del BCB è un
deserto in proposito. :-((
--
--- BEGIN GEEK CODE BLOCK ---
Version: 3.12
GE/CC/CS/S d@ s+:+>+: a C++++(+)>$ UL++(+++)>++++
P+>+++ L++>++++ E? W+>+++$ N++ o? K? w++>+++ O M?
V PS+ PE+ Y+ PGP t++ 5? !X R tv b++ DI++ D++ G
e++>+++ h!>++ !r->++ y?
--- END GEEK CODE BLOCK ---

 come devo fare per riaverlo ordinato?
Ad esempio:
#include <iostream>
#include <algorithm>
#include <cstdlib>
int main()
{
    int array[ 10 ];
    size_t size = sizeof( array ) / sizeof( array[ 0 ] );
    for ( int i = 0; i < size; ++i )
        array[ i ] = std::rand();
    std::sort( array, array + size );
    for ( int i = 0; i < size; ++i )
        std::cout << array[ i ] << '\n';
    return 0;
}
EMG

 EMG
ciao
Franz

 writes:

rand
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it
The instructions said to use Windows 98 or better - so I installed FreeBSD.

perchè <cstdlib> ?
E' la versione standard di inclusione dei vecchi header C.
--
Andrea Laforgia (ICQ 87230455)
http://www.geocities.com/AndreaLaforgia
"ci sono tre tipi di persone nel mondo : quelli che
 sono bravi in matematica e quelli che non lo sono."

 perchè <cstdlib> ?
Perché nel programma utilizzavo la funzione std::rand() che è dichiarata
nell'header file suddetto.
EMG

Ah, allora era così... Ma perchè hai usato
std::sort/* ecc. ecc. */ ?
hai usato il namespace std? E' un namespace predefinito?
A proposito, ma quale è l'utilità dei namespace?
Io li vedo un pò come una complicazione inutile...


Io li vedo un pò come una complicazione inutile...
Assolutamente no, soprattutto se il tuo progetto si compone di più moduli.
Cosa succede, ad esempio, se compili un programma che tramite include ""
riceve più variabili, o funzioni, associate ad un medesimo identificatore? 
Una situazione di ambiguità non gestibile.
Inoltre, anche se dipende dallo sviluppatore stesso, si potrebbero
utilizzare dei namespace per raggruppare più elementi correlati assieme da
un utilizzo comune.
Prova a pensare ad una dichiarazione astratta di un header che rappresenti
l'I/O su schermo. O sezioni il sorgente stesso in più librerie, oppure
utilizzi un namespace per raggruppare le definizioni associate all'input ed
un altro per quelle che si occupano dell'output. (ovviamente è un esempio
di poca utilità).
Vi sono molti altri utilizzi dei namespace e rimando quindi ad una
trattazione certamente più completa di quella affrontata in questa sede. 
PS: pochi giorni fa vi è stato un thread a riguardo.
Ciao.

 Io li vedo un pò come una complicazione inutile...
Non direi.
EMG

dell'input e dell'output sono incluse nello stesso.
l'header standard è <iostream>, senza il .h; inoltre è importante
precisare che TUTTI gli header standard pongono i nomi all'interno del
namespace std, non solo iostream; anche i vecchi header della libreria
C sono stati affiancati da nuovi header che pongono i nomi in std (ad
esempio <stdio.h> dichiara printf(), <cstdio> dichiara std::printf() )
Anto
--
Antonio Cuni, 18 anni, studente
Brainbench Certification: 
Master C++: 4.44, higher than 97% of all previous test takers.
Visual Basic 5: 3.06, higher than 77% of all previous test takers.
http://www.brainbench.com/transcript.jsp?pid=1301688