Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » variabler Puffer

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 <
000
03.04.2006, 01:03 Uhr
~mysic
Gast


Hallo C++ Spezialisten!

ich benötige keinen dynamischen, aber einen variablen Puffer.
Weil er nicht dynamisch sein soll verwende ich keine verkettete Liste (die drückt die Performance, oder?)

Das habe ich:

C++:
class Buffer
{
    public:
    Buffer();
    
    methoden

    private:
    unsigned long content[10];
};


und das hätte ich gerne:


C++:
class Buffer
{
    public:
    Buffer(int size);
    
    methoden

    private:
    unsigned long content[];
};



geht das? wenn ja wie sieht der Konstruktor aus?
Wenn nicht, verkettete Liste? Oder was sonst?

Danke für die Hilfe,
Rainer

mod edit: BENUTZE DIE CPP TAGS SELBER

Dieser Post wurde am 03.04.2006 um 02:05 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.04.2006, 05:29 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Wenn du klassen verwendest kannst du gleich z.B. std::vector nehmen... wenn du unbedingt selber basteln willst...


C++:
unsigned long *content;
//im konstruktor und immer wenn das ding wachsen soll new aufrufen und den alten speicher immer zuvor und im destruktor wieder mit delete freigeben...


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.04.2006, 10:48 Uhr
RHBaum




Zitat:

ich benötige keinen dynamischen, aber einen variablen Puffer.



Wie wichtig ist die Performance, und wie "verwendest" du den Container ?

richtig:
nen statischer buffer aufn stack ist schneller als nen dynamischer.
int a[10]; versus int * pa = new int[10];

Der einzige unterschied ist aber die Erzeugung ... und der mechanismus der zerstoerung.
Zur laufzeit isses volkommen wurscht, ob die dinger dynamisch oder statisch sind (vorausgesetzt deine datenmenge passt aufn stack) .

Also wenn deinen buffer einmal erzeugst, dein ganzes programm lang damit abreitest und dann die sache zerstoerst ... ist die geschwindigkeit beim erzeugen / zerstoeren meist total banane ....

Erzeugst du aber die buffer in schleifen, also die buffer werden relativ oft konstruiert und wieder verworfen, ist das new toedlich (fuer die performance) !

Dann erzeug es aufm Stack ....

Soll die groesse variabel sein, aber zur compilezeit schon bekannt, dann nutze templates ...


C++:
template<class T,size_t ISIZE>
class StaticVector
{
private:
    T data[ISIZE];
};



Soll die groesse aber zur laufzeit irgendwie erst ermittelt werden, hasst du nen problem ^^
entweder du verhinderst das staendige neuerzeugen ... in dem schon immer in vorinitialisierte container schreibst, oder du machst die teile groesser als wie brauchst und arbeitest wieder statisch ... auf kosten eines mehrverbrauchs an Arbeitsspeicher ....


Zitat:

Weil er nicht dynamisch sein soll verwende ich keine verkettete Liste


Du bringst hier ne menge durcheinander ^^ Anwendungsfaelle / Performance betrachtungen zu den einzelnen mechanismen bei containern(Vectoren, verkettete listen, Baeume) und was die typischen anwendungsfaelle sind, solltest dir dringendst mal anschauen, wenn deine programme zumindest ansatzweise was mit dem begriff performant zu tun haben sollen ^^

Ciao ...

Dieser Post wurde am 03.04.2006 um 10:52 Uhr von RHBaum editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.04.2006, 01:49 Uhr
0xdeadbeef
Gott
(Operator)


Benutz halt nen vector, der funzt wie ein besseres array:

C++:
#include <vector>

// ...

std::vector<unsigned long> my_vector(10);


Doku auf www.sgi.com/tech/stl
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: