Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Stack - Zuweisungsfunktion

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
22.05.2007, 19:48 Uhr
0xdeadbeef
Gott
(Operator)


Lass bloß diese print-Methoden sein. Die sind höchstens zum Debuggen zu gebrauchen. Besser:

C++:
class StackDbl {
// ...
  friend std::ostream &operator<<(std::ostream&, StackDbl const &);
};

std::ostream &operator<<(std::ostream &os, StackDbl const &stack) {
    os << "Capacity: " << stack.capacity << std::endl;
    os << "Index: " << stack.index << std::endl;
    for(int i = 0; i < stack.index + 1; ++i)
    {
        os << stack.container[i] << ' ';
    }
    os << std::endl;  
    return os;
}

// ...

StackDbl s;
std::cout << s;


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 22.05.2007 um 19:48 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
22.05.2007, 20:09 Uhr
0xdeadbeef
Gott
(Operator)


So ganz nebenbei, die einfachste Methode, in C++ einen Stack zu "implementieren", ist

C++:
#include <stack>


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
22.05.2007, 21:34 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


mal von include<stack> abgesehen wäre das ganze Teil reif für nen template.

Bei uns haben se es sogar geschafft uns C als C und C++ als C++ zu verkaufen, aber was ich so von anderen Unis und FHs gesehen hab nehmens da diverse "Profs" nicht so genau mit den Unterschieden.
--
class God : public ChuckNorris { };

Dieser Post wurde am 22.05.2007 um 21:36 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
22.05.2007, 21:57 Uhr
0xdeadbeef
Gott
(Operator)


"Professionell" heißt nicht immer auch gut. Du wärst erstaunt, was man in professionellem (lies: kommerziellem) Code so alles an komischem Kram findet.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
22.05.2007, 22:10 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


das beste beispiel hierzu - um mal ein produkt zu nennen: paint shop "pro"
wenn die unter "professional" alles was besser ist als paint verstehen - gut - dann wärs da gerechtfertigt, ansonsten ...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
23.05.2007, 08:51 Uhr
(un)wissender
Niveauwart


@beefy
Schon klar mit print, aber ich dachte halte den Code so anfängermäßig wie möglich.
Ansonsten würde ich den Stack (wenn <stack> nicht in Frage käme) so implementieren wie du, allerdings ohne Exceptionspezifikation, weil die kaum Sinn machen.
Aber die Diskussion gabs schon mal, da konnte ich auch virtual überzeugen
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
23.05.2007, 11:23 Uhr
0xdeadbeef
Gott
(Operator)


Naja - eigentlich würd ich das ganze im Zweifel nicht mit einem Array implementieren, insbesondere nicht, wenns eine template werden soll.

Was die Exceptionspezifikationen angeht, throw() macht für den Optimizer Sinn, der kann dann ggf. das Exceptionhandling wegoptimieren. throw(blabla) ändert nachher am Binärcode nichts, das ist richtig, aber ich schreib sowas trotzdem immer hin, der Übersichtlichkeit halber. Ich bin mir bewusst, dass die Funktion prinzipiell auch std::bad_alloc etc schmeißen kann, aber darum gehts da ja auch nicht - ich benutze das als "Diese Exceptions kannst du erwarten / solltest du abfangen, wenn du diese Funktion benutzen willst"
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
24.05.2007, 23:39 Uhr
(un)wissender
Niveauwart


Jupp Array ist wohl i.d.R. suboptimal.


Zitat von 0xdeadbeef:

[...]throw(blabla) ändert nachher am Binärcode nichts[...]



Oh, das sollte es aber, und zwar normalerweise zur negativen Performance. Der Compiler darf nur diese Exceptions zulassen, muss also prüfen, und dann ggf. unexpected oder so aufrufen.
--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 24.05.2007 um 23:39 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: