Newsgroup: it.comp.lang.c++
Titolo: Standard Library Algotithms

Salve e Buone Feste a tutti.
Vorrei capire se e` il mio compilatore che e` un po` "rinco" oppure se
e` cio`
che e` scritto sullo Stroustrup che non torna.
Da Stroustrup "THE C++ PROGRAMMING LANGUAGE", third edition,
paragrafo 3.8.6 Standard Library Algorithms (pag. 64)
...."The algorithms are defined in namespace std and presented in the
<algo>
header".
Da questa frase io deducevo che per utlizzare gli algoritmi in
questione,
tipo count() o for_each(), ecc., si dovesse includere l'header <algo>.
Pero` se lo faccio il mio compilatore da`
[mg@p2 prove]$ g++ -g -Wall a.cc -o a
a.cc:1: algo: No such file or directory
devo includere l'header <algorithm> invece di algo.
Vorrei capire cosa dice lo standard. Presumo che quello che dice
Stroustrup sia corretto ma gradirei una conferma.
Il mio compilatore e`:
[mg@p2 prove]$ g++ --version
egcs-2.91.66
ho anche provato una ricerca come segue ma gli unici header che iniziano
con "algo" sembrano essere i seguenti
[mg@p2 prove]$ find /usr/include/ -name "algo*"
/usr/include/g++-2/algo.h
/usr/include/g++-2/algobase.h
/usr/include/g++-2/algorithm

Ciao,
sei sicuro di gestire correttamente il namespace std, ovvero di usare in
alternativa:
- std::for_each
- using std::for_each;
- using namespace std;
Ciao,
Nicola

Nicola Musatti wrote:

Mmmmh... mi sa che non mi sono spiegato bene.
riporto di seguito il file a.cc e riporto anche il problema.
Il fatto e` che se cambio la
#include <algorithm> in
#include <algo> => ottengo gli errori indicati in seguito
questo e` il file a.cc
#include <algotithm> //questa e` la riga incriminata
#include <string>
#include <vector>
#include <string>
#include <fstream>
void g(char cs[],int sz, char c) {
    std::cout << std::count(&cs[0],&cs[sz],c) << std::endl;
}
void copiaFile() {
    std::string from,to;
    std::cin >> from >> to;
    std::ifstream is(from.c_str());
    std::istream_iterator<std::string> ii(is);
    std::istream_iterator<std::string> eos;
    std::vector<std::string> b(ii,eos);
    for(vector<string>::iterator it=b.begin(); it != b.end(); it++)
        std::cout << (*it) << std::endl;
    std::sort(b.begin(), b.end());
    std::ofstream os(to.c_str());
    std::ostream_iterator<string> oo(os,"\n");
    std::unique_copy(b.begin(),b.end(),oo);
}
int main() {
    char a[]="asdefewrgfrfxsgfvdthgx";
    g(a,sizeof(a),'x');
    copiaFile();
    return 0;
}
Questa e` la ripetizione di quanto al messaggio precedente











Di nuovo Buone Feste
Marco Guidi

Penso che sia un errore del libro, anche perche' a pag. 508 cita
<algorithm> che dovrebbe essere l'header corretto da includere ed e'
quello usato tra l'altro dal Borland C++ Builder.
Ciao,
Nicola

 header".
Credo che quello standard sia algorithm
EMG

 Stroustrup sia corretto ma gradirei una conferma.
Presumi male -- l'unico autore di linguaggi di programmazione
che ha una macchina del tempo e` Guido van Rossum!-)
Alex

 che ha una macchina del tempo e` Guido van Rossum!-)
Chi accidenti è?
EMG

Chi accidenti č?
Autore del Python (ottimo, veramente carino, conpletamente ad oggetti,
multipiattaforma, e' come il perl, pero' non l'ho ancora imparato :-))
http://www.python.org
--
 (o-  | HomePage 
http://pinguin.linuxbox.com
 //\  | email: r.salmaso (at) 
flashnet.it
 V_/_ | email: pinguin (at) 
pinguin.linuxbox.com

 
http://www.python.org
Ho anche tradotto in italiano alcuni brevi tutorial su questo linguaggio;
li trovate alla mia pagina 
http://aleax.supereva.it/
.
Non l'ho ancora imparato del tutto neanch'io, ma sono gia` al
lavoro a rifare in Python un po' tutto quello che ho fatto in
passato in Perl, e non poco di quel che ho fatto in C++...:-).
Alex