Hallo,
erstmal noch etwas zum Hintergrund bzgl. "dynamischer Vektoren":
In C und C++ muß man den Speicher selbst verwalten.
Statische, also unveränderbare Arrays (Felder, Vektoren) (vergleichbar Python-Tuplen (die erstmal nur ganze Zahlen enthalten, bei Strings wird's schon wieder schwieriger)), sind dabei nicht so problematisch, weil ihr Speicherbedarf bei Deklaration, bzw. Initialisierung bekannt ist.
Wenn man an eine dynamische Liste etwas anhängt, verändert sich aber ihr Speicherbedarf. Das muß der C/C++-Programmierer berücksichtigen, oder es entstehen Speicherlecks usw..
Es gibt mehrere Möglichkeiten, dynamische Listen in C/C++ zu programmieren. Je nachdem können z.B. Suchoperationen in verschiedenen Listentypen schneller oder langsamer sein usw..
In der "Standard Template Library" (STL) von C++ gibt es z.B. die Listentypen "vector", "deque" und "list":
http://www.c-plusplus.de/forum/viewtopi ... 43816.html
Soweit ich weiß, gibt es in C so ein praktische Standardbibliothek für Listen nicht. Offenbar wird erwartet, daß der Programmierer sie selbst implementiert. Immerhin gibt es hier
http://freshmeat.net/projects/libhx/
eine C-Bibliothek, die sich daran versucht.
In Python wird die Implementation der Listen vom Programmierer absichtlich ferngehalten. Diese Ebene ist bereits im Python-Interpreter fertiggestellt.
Das ist einer der wesentlichen Gründe, warum die Programmierung mit Python im Verhältnis so schnell und angenehm ist.
Dies ist jedoch auch einer der Gründe, warum Python-Code in der Regel insgesamt etwas langsamer abläuft als C-Code.
Viele Grüße
Dynamischer Vektor
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Nunja, ganz so schlimm ist es nicht, denn mit der GLib gibt es durchaus eine Library für C die einem lästige Dinge abnimmt. Wenn man bedenkt, dass Programme wie irssi dasnutzen und GLib die Grundlage von GTK+ ist (und auch eigentlich von dort stammt), welches von vielen, vielen Programmen genutzt wird dann kann man durchaus von "populär" sprechen. Wer mehr Syntaktischen Zucker braucht, kann sich an dieser Stelle auch Vala ansehen, eine Sprache die zu C+GLib (GObject) kompiliert wird.abgdf hat geschrieben:Soweit ich weiß, gibt es in C so ein praktische Standardbibliothek für Listen nicht. Offenbar wird erwartet, daß der Programmierer sie selbst implementiert. Immerhin gibt es hier
http://freshmeat.net/projects/libhx/
eine C-Bibliothek, die sich daran versucht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack hat geschrieben:Für den Fall wäre wohl eine `collections.deque` eine bessere Wahl. Natürlich am besten in eine eigene Klasse verpackt.
ichbinsisyphos hat geschrieben:Lässt sich da die Länge fixieren?
Mir spuckt die Doku diese Signatur aus: ``collections.deque([iterable[, maxlen]])`` - reicht das nicht?BlackJack hat geschrieben:Nein, deswegen ja die eigene Klasse.
Sag uns doch mal, was du mit Tabelle, anzeigen und neuer Zeile meinst.Ingo hat geschrieben:Also ich habe eine schleife in der zuerst nach einem messwert gefragt wird. ich bekomme den messwert. dieser messwert wird in der tabelle angezeigt. die schleife ist nun zu ende. sie beginnt von vorne und fragt wieder nach dem messwert ich bekommen den messwert dieser soll in einer neuen zeile angezeigt werden. der vorherige messwert ist eine zeile oben drüber. ich bestimme wie oft die schleife durchläuft und bestimme dadurch die anzahl meiner messwerte. aber wie kann ich immer den aktuellsten messwert in die neue zeile bringen?
Redest du da von Datenstrukturen wie einer Liste oder von der print-ausgabe, etc.? Willst du die Daten konservieren oder nur anzeigen?
@Y0Gi:
Muss dann wohl in 2.6 neu sein.
Code: Alles auswählen
In [284]: collections.deque([], 10)
---------------------------------------------------------------------------
<type 'exceptions.TypeError'> Traceback (most recent call last)
/home/bj/<ipython console> in <module>()
<type 'exceptions.TypeError'>: deque expected at most 1 arguments, got 2
Ja:MfG
HWK
Code: Alles auswählen
Changed in version 2.6: Added maxlen parameter.
HWK
@Leonidas: Aha, mit Glib geht das . Soweit bin ich eben nicht in C vorgedrungen. Ist mir halt zu anstrengend, wenn man einfach
haben kann.
@Ingo:
Gruß
Code: Alles auswählen
a = [1, 2, 3]
@Ingo:
Woher ?Also ich habe eine schleife in der zuerst nach einem messwert gefragt wird. ich bekomme den messwert.
In welcher Tabelle ? Excel ?dieser messwert wird in der tabelle angezeigt.
Wen ?die schleife ist nun zu ende. sie beginnt von vorne und fragt wieder nach dem messwert
Woher ?ich bekommen den messwert
Was für eine Zeile ? Eine Terminal-Zeile ? Eine Excel-Tabellenzeile ?dieser soll in einer neuen zeile angezeigt werden. der vorherige messwert ist eine zeile oben drüber.
Wie ?ich bestimme wie oft die schleife durchläuft und bestimme dadurch die anzahl meiner messwerte.
Das hängt davon ab, was es für eine Zeile ist: Bei einer Ausgabe im Terminal geht das anders als bei einem Eintrag in eine Excel-Tabelle.aber wie kann ich immer den aktuellsten messwert in die neue zeile bringen?
Gruß