/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
[C++] stack, Stroustrup vs Lafore
Fra : Christoffer Olsen


Dato : 11-09-04 06:47

Hej

Jeg har to bøger om C++, nemlig:

Stroustrup: The C++ programming language, special edition (3th)
og
Robert Lafore: Object Oriented programming in C++ (4th)

I Lafore-bogen beskrives måden at lave en stack, til f.eks. integers,
sådan her:

stack< deque<int> > mystack;

Men Stroustrup siger:

stack<int> mystack;

I praksis, med g++-3.3.2 og g++-3.3.4 er det "selvfølgelig" Stroustrup
der har ret, eller er det? Hvad er den korrekte måde at erklære
stacken på?

Det ser ud til at Lafore's måde at gøre det på får oversætteren til at
tro der er tale om de bitvise operatorer << og >>, gør jeg noget
forkert når jeg prøver at erklære min stack?

--
Mvh
Christoffer Olsen

http://my.opera.com/dev/discussion/openweb/20030206/

 
 
Bertel Brander (11-09-2004)
Kommentar
Fra : Bertel Brander


Dato : 11-09-04 11:45

Christoffer Olsen wrote:
> Hej
>
> Jeg har to bøger om C++, nemlig:
>
> Stroustrup: The C++ programming language, special edition (3th)
> og
> Robert Lafore: Object Oriented programming in C++ (4th)
>
> I Lafore-bogen beskrives måden at lave en stack, til f.eks. integers,
> sådan her:
>
> stack< deque<int> > mystack;
>
> Men Stroustrup siger:
>
> stack<int> mystack;
>
> I praksis, med g++-3.3.2 og g++-3.3.4 er det "selvfølgelig" Stroustrup
> der har ret, eller er det? Hvad er den korrekte måde at erklære
> stacken på?
>
> Det ser ud til at Lafore's måde at gøre det på får oversætteren til at
> tro der er tale om de bitvise operatorer << og >>, gør jeg noget
> forkert når jeg prøver at erklære min stack?
>

Så vidt jeg ved har begge ret. En stack defaulter til at bruge deque
hvis man ikke angiver andet.

I erklæringen er der forskel på disee:

stack< deque<int> > mystack;
stack< deque<int>> mystack;

Den første er rigtig, den sidste er ikke.

--
What's in a name?
That which we call a rose by any other name would smell as sweet.
- Juliet
http://home20.inet.tele.dk/midgaard/

Christoffer Olsen (11-09-2004)
Kommentar
Fra : Christoffer Olsen


Dato : 11-09-04 08:47

Bertel Brander <bertel@post4.tele.dk> writes:

> Så vidt jeg ved har begge ret. En stack defaulter til at bruge deque
> hvis man ikke angiver andet.

Ok, du har ret, det skriver Stroustrup faktisk også i §17.3.1 (fik
ikke lige læst videre da jeg stødte på den første definition :)

Men i hans eksempel skal man skrive typen for stacken, som her:

stack<int, deque<int> > mystack;

Og på den måde virker det også med g++, men det er stadig ikke det
samme som Lafore skriver:

stack< deque<int> > aStack; // (p. 732)

Der var forresten ikke noget med at den forvekslede med operator<<
alligevel :)

--
Mvh
Christoffer Olsen

http://my.opera.com/dev/discussion/openweb/20030206/

Mogens Hansen (11-09-2004)
Kommentar
Fra : Mogens Hansen


Dato : 11-09-04 14:08


"Christoffer Olsen" <christofferolsen@ninja.dk> wrote:

[8<8<8<]
> Ok, du har ret, det skriver Stroustrup faktisk også i §17.3.1 (fik
> ikke lige læst videre da jeg stødte på den første definition :)

Normal kan man roligt regne med at hvad der står Stroustrup's "The C++
Programming Language, Special Edition" er rigtigt - det er en ualmindelig
troværdig bog.

Der skal _hårde_ argumenter (reference til C++ Standarden eller bogens
errata http://www.research.att.com/~bs/3rd_errata.html) på bordet hvis man
mener at have fundet en fejl - andre bøger eller en given compilers opførsel
er typisk ikke tilstrækkeligt.

>
> Men i hans eksempel skal man skrive typen for stacken, som her:
>
> stack<int, deque<int> > mystack;
>
> Og på den måde virker det også med g++, men det er stadig ikke det
> samme som Lafore skriver:
>
> stack< deque<int> > aStack; // (p. 732)

Det er rent faktisk lovligt at skrive som han gør - man får blot ikke en
stack af int.
Man får en stack af "deque<int>" objekter - det er jo hvad der bliver bedt
om

Præcis som hvis man skriver
stack<string>
så får man en stack af string objekter.


Som altid kan det være værd at kigge på bog-review hos ACCU (www.accu.org).
Robert Lafore's bog er anmeldt på
http://www.accu.org/cgi-bin/accu/rvout.cgi?from=0au_l&file=o003132a
Det ser ud som det kunne være bedre - vær varsom.
Jeg kan ikke huske om jeg har set den, men det forekommer mig at den bliver
brugt på DTU - er det der du har den fra ?

Hvis man skulle have lyst til at se det tilsvarende review af Bjarne
Stroupstrup's bog:
http://www.accu.org/cgi-bin/accu/rvout.cgi?from=0au_s&file=cp002117a


Venlig hilsen

Mogens Hansen



Christoffer Olsen (11-09-2004)
Kommentar
Fra : Christoffer Olsen


Dato : 11-09-04 12:20

"Mogens Hansen" <mogens_h@dk-online.dk> writes:

> > stack< deque<int> > aStack; // (p. 732)
>
> Det er rent faktisk lovligt at skrive som han gør - man får blot ikke en
> stack af int.
> Man får en stack af "deque<int>" objekter - det er jo hvad der bliver bedt
> om

He he, det forklarer så hvorfor det vil kompile lige indtil jeg prøver
at behandle resultatet af top() som en (i det her tilfælde) int.

> Som altid kan det være værd at kigge på bog-review hos ACCU (www.accu.org).
> Robert Lafore's bog er anmeldt på
> http://www.accu.org/cgi-bin/accu/rvout.cgi?from=0au_l&file=o003132a

Tak for tippet!

> Det ser ud som det kunne være bedre - vær varsom.
> Jeg kan ikke huske om jeg har set den, men det forekommer mig at den bliver
> brugt på DTU - er det der du har den fra ?

Ja, det er, købte den er pensum til et af mine kurser, og jeg købte
den selvom jeg havde Stroustrups i forvejen.

--
Mvh
Christoffer Olsen

http://my.opera.com/dev/discussion/openweb/20030206/

Mogens Hansen (11-09-2004)
Kommentar
Fra : Mogens Hansen


Dato : 11-09-04 17:19


"Christoffer Olsen" <christofferolsen@ninja.dk> wrote:

> He he, det forklarer så hvorfor det vil kompile lige indtil jeg prøver
> at behandle resultatet af top() som en (i det her tilfælde) int.

Be carefull what you ask for - you might get it

[8<8<8<]
> Ja, det er, købte den er pensum til et af mine kurser, og jeg købte
> den selvom jeg havde Stroustrups i forvejen.

Det er man vel næsten nødt til - men det er ærgeligt så mange hel- eller
halv-dårlige bøger der bliver brugt.

Hold fast i Bjarne Stroustrup's bog.
Vær opmærksom på at der findes en bog med løsning til mange af opgaverne:
C++ Solutions
Daveed Vandevoorde
ISBN 0-201-30965-3

og hvis du vil have en lettere (men ikke komplet), utrolig god introduktion
til moderne C++, så kan jeg varmt anbefale
Accelerated C++, Practical Programming by Example
Andrew Koenig, Barbara E. Moo
ISBN 0-201-70353-X

Venlig hilsen

Mogens Hansen



Jacob Bunk Nielsen (11-09-2004)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 11-09-04 16:54

Christoffer Olsen <christofferolsen@ninja.dk> writes:

> Ja, det er, købte den er pensum til et af mine kurser, og jeg købte
> den selvom jeg havde Stroustrups i forvejen.

Må man spørge hvilket kursus? Jeg læser selv på DTU (informatik), men
har heldigvis ikke været "velsignet" med en så middelmådig bog.

Jeg ved at flere af mine venner der læser på maskinretningen lærer
noget C og/eller C++, og at det ikke ligefrem virker som noget højt
fagligt niveau de kører med.

--
Jacob - www.bunk.cc
I'm not tense, just terribly, terribly alert!

Christoffer Olsen (11-09-2004)
Kommentar
Fra : Christoffer Olsen


Dato : 11-09-04 20:12

Jacob Bunk Nielsen <spam@bunk.cc> writes:

> Må man spørge hvilket kursus? Jeg læser selv på DTU (informatik), men
> har heldigvis ikke været "velsignet" med en så middelmådig bog.

Jeps, det er:

http://www.kurser.dtu.dk/presentation/presentation.asp?&menulanguage=dk&coursecode=02393-3

--
Mvh
Christoffer Olsen

http://my.opera.com/dev/discussion/openweb/20030206/

Søg
Reklame
Statistik
Spørgsmål : 177458
Tips : 31962
Nyheder : 719565
Indlæg : 6408170
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste