<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Einen Verzeichnisbaum mit Objekten nachbilden]]></title><description><![CDATA[<p>Ich muss für ein Projekt einen existierenden Verzeichnisbaum einlesen, und programmintern mit<br />
Objekten repräsentieren. Hierbei muss es möglich sein:</p>
<ul>
<li>ein zufälliges Objekt (Verzeichnis / Datei) auswählen</li>
<li>ein Objekt (Verzeichnis / Datei) in beliebiger Verzeichnistiefe hinzufügen</li>
<li>Alle Dateien / Unterverzeichnisse innerhalb eines Objekts (Verzeichnis) herauszufinden</li>
</ul>
<p><strong>Hat jemand so etwas schon mal programmiert oder eine Idee, wie man so was elegant löst?</strong></p>
<p>Ich dachte zuerst eine Verschachtelte Objektstruktur:</p>
<p>(jedes Verzeichnis wird von einem Objekt repräsentiert. Es enthält 2 Arrays, eines davon für Datei<br />
Objekte, das andere für weitere Verzeichnisobjekte, die wiederum 2 Arrays enthalten)<br />
<em>Das kommt mir aber wenig elegant und übersichtlich vor.</em></p>
<p>Meine zweite Idee wären mit Containern (multimap/multiset) aus der STL zu arbeiten</p>
<ul>
<li>1. Möglichkeit → es gibt nur ein Objekt, dass sowohl Datei als auch Verzeichnisse re-<br />
präsentieren kann. Dann könnte mit nur einem Container gearbeitet werden</li>
<li>2. Möglichkeit → es gibt 2 Container, einen für Verzeichnisse, einen für Dateien</li>
</ul>
<p>Bei Containern habe ich noch keine Idee, wie ich den zufälligen Zugriff auf Elemente gestalten soll,<br />
ebenfalls fehlt mir die Idee, wie ich herausfinden kann, welche Dateien / Unterverzeichnisse ein Verzeichnis enthält.</p>
<p><strong>Ich bin für jeden Denkanstoß / für jede Idee dankbar!</strong></p>
<p>*<strong>Hintergrundinfo für die die es interessiert:</strong><br />
ich muss ein Programm erstellen, welches die Konsistenz von Daten auf einem externen Datenträger unter<br />
Stressbedingungen über einen längeren Zeitraum überprüft. Hierzu werden zufällige Dateioperationen durch-<br />
geführt (delete( ), create( ), copy( ), truncate( ),….).</p>
<p>Alle Dateien und Verzeichnisse werden in doppelter Ausführung (in zwei Verzeichnisbäumen) auf dem externen<br />
Datenträger angelegt/gelöscht/verschoben. Außerdem wird für jede Datei / jedes Verzeichnis ein Objekt ange-<br />
legt, dass als Referenz dient, um die Konsistenz der Daten überprüfen zu können.</p>
<p>Nach ca. 1000 Dateioperationen werden die Verzeichnisbäume auf dem externen Datenträger erst miteinander,<br />
und dann mit den Referenzobjekten verglichen, um herauszufinden ob alle Daten noch korrekt sind. Jede<br />
Operation wird geloggt, und das Programm ist so aufgebaut, dass Durchläufe reproduzierbar sind weil alle Zufalls-<br />
werte durch einen Pseudo-Zufallsgenerator generiert werden, dessen Seed vorgegeben werden kann*</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/269804/einen-verzeichnisbaum-mit-objekten-nachbilden</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 03:32:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/269804.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 01 Jul 2010 13:12:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Einen Verzeichnisbaum mit Objekten nachbilden on Thu, 01 Jul 2010 13:12:30 GMT]]></title><description><![CDATA[<p>Ich muss für ein Projekt einen existierenden Verzeichnisbaum einlesen, und programmintern mit<br />
Objekten repräsentieren. Hierbei muss es möglich sein:</p>
<ul>
<li>ein zufälliges Objekt (Verzeichnis / Datei) auswählen</li>
<li>ein Objekt (Verzeichnis / Datei) in beliebiger Verzeichnistiefe hinzufügen</li>
<li>Alle Dateien / Unterverzeichnisse innerhalb eines Objekts (Verzeichnis) herauszufinden</li>
</ul>
<p><strong>Hat jemand so etwas schon mal programmiert oder eine Idee, wie man so was elegant löst?</strong></p>
<p>Ich dachte zuerst eine Verschachtelte Objektstruktur:</p>
<p>(jedes Verzeichnis wird von einem Objekt repräsentiert. Es enthält 2 Arrays, eines davon für Datei<br />
Objekte, das andere für weitere Verzeichnisobjekte, die wiederum 2 Arrays enthalten)<br />
<em>Das kommt mir aber wenig elegant und übersichtlich vor.</em></p>
<p>Meine zweite Idee wären mit Containern (multimap/multiset) aus der STL zu arbeiten</p>
<ul>
<li>1. Möglichkeit → es gibt nur ein Objekt, dass sowohl Datei als auch Verzeichnisse re-<br />
präsentieren kann. Dann könnte mit nur einem Container gearbeitet werden</li>
<li>2. Möglichkeit → es gibt 2 Container, einen für Verzeichnisse, einen für Dateien</li>
</ul>
<p>Bei Containern habe ich noch keine Idee, wie ich den zufälligen Zugriff auf Elemente gestalten soll,<br />
ebenfalls fehlt mir die Idee, wie ich herausfinden kann, welche Dateien / Unterverzeichnisse ein Verzeichnis enthält.</p>
<p><strong>Ich bin für jeden Denkanstoß / für jede Idee dankbar!</strong></p>
<p>*<strong>Hintergrundinfo für die die es interessiert:</strong><br />
ich muss ein Programm erstellen, welches die Konsistenz von Daten auf einem externen Datenträger unter<br />
Stressbedingungen über einen längeren Zeitraum überprüft. Hierzu werden zufällige Dateioperationen durch-<br />
geführt (delete( ), create( ), copy( ), truncate( ),….).</p>
<p>Alle Dateien und Verzeichnisse werden in doppelter Ausführung (in zwei Verzeichnisbäumen) auf dem externen<br />
Datenträger angelegt/gelöscht/verschoben. Außerdem wird für jede Datei / jedes Verzeichnis ein Objekt ange-<br />
legt, dass als Referenz dient, um die Konsistenz der Daten überprüfen zu können.</p>
<p>Nach ca. 1000 Dateioperationen werden die Verzeichnisbäume auf dem externen Datenträger erst miteinander,<br />
und dann mit den Referenzobjekten verglichen, um herauszufinden ob alle Daten noch korrekt sind. Jede<br />
Operation wird geloggt, und das Programm ist so aufgebaut, dass Durchläufe reproduzierbar sind weil alle Zufalls-<br />
werte durch einen Pseudo-Zufallsgenerator generiert werden, dessen Seed vorgegeben werden kann*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1919927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919927</guid><dc:creator><![CDATA[zitroneneis]]></dc:creator><pubDate>Thu, 01 Jul 2010 13:12:30 GMT</pubDate></item><item><title><![CDATA[Reply to Einen Verzeichnisbaum mit Objekten nachbilden on Thu, 01 Jul 2010 13:32:11 GMT]]></title><description><![CDATA[<p>zitroneneis schrieb:</p>
<blockquote>
<p>Meine zweite Idee wären mit Containern (multimap/multiset) aus der STL zu arbeiten</p>
<ul>
<li>2. Möglichkeit → es gibt 2 Container, einen für Verzeichnisse, einen für Dateien</li>
</ul>
</blockquote>
<p>Das klingt doch sehr gut! Evtl. werden dir einige zu einem kombinierten Container raten,<br />
aber das ist Geschmacksache</p>
<p>zitroneneis schrieb:</p>
<blockquote>
<p>Bei Containern habe ich noch keine Idee, wie ich den zufälligen Zugriff auf Elemente gestalten soll,<br />
ebenfalls fehlt mir die Idee, wie ich herausfinden kann, welche Dateien / Unterverzeichnisse ein Verzeichnis enthält.</p>
</blockquote>
<p>Also ich schlag einfach mal boost vor:<br />
<a href="http://www.boost.org/doc/libs/1_43_0/libs/filesystem/doc/index.htm" rel="nofollow">http://www.boost.org/doc/libs/1_43_0/libs/filesystem/doc/index.htm</a><br />
<a href="http://www.boost.org/doc/libs/1_43_0/libs/filesystem/example/simple_ls.cpp" rel="nofollow">http://www.boost.org/doc/libs/1_43_0/libs/filesystem/example/simple_ls.cpp</a><br />
Jeder Knoten - sowohl Datei als auch Verzeichnis enthält dann ein fs::path Objekt</p>
<p>Jetzt kommt es natürlich an wie du zufällig definierst...<br />
Ich würde es machen mit einer WK von 50% wähle eines der Verzeichnisse,<br />
WK von 40% ändere Datei, mit WK von 10% erstelle Datei.</p>
<p>Also irgendwas in der Art... Wahrscheinlich solltest du die erste WK noch abhängig von der Tiefe machen...</p>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1919944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919944</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 01 Jul 2010 13:32:11 GMT</pubDate></item><item><title><![CDATA[Reply to Einen Verzeichnisbaum mit Objekten nachbilden on Thu, 01 Jul 2010 13:59:29 GMT]]></title><description><![CDATA[<p>Danke erstmal für die schnelle Antwort, und die Tips.<br />
Ich werde mir das anschauen, und ausprobieren!</p>
<p>Betreffend der Wahrscheinlichkeiten:</p>
<p>es wird zuerst ausgewählt was für eine Operation durchgeführt werden soll:</p>
<ul>
<li>*20% - Check()*→[File or Directory]</li>
<li>*8% - Create()*→[File or Directory]</li>
<li>*4% - Delete()*→[File or Directory]</li>
<li>*25% - Write()*→[File]</li>
<li><em>25% - Read()</em> →[File]</li>
<li><em>2% - Truncate()</em> →[File]</li>
<li><em>12% - Copy()</em> →[File]</li>
<li><em>4% - Move()</em> →[File]</li>
</ul>
<p>In der aufgerufenen Funktion wird dann aus dem Objektbaum eine zufällige Datei bzw.<br />
ein zufälliges Verzeichnis ausgewählt (keine vorgegebenen Wahrscheinlichkeiten), aber<br />
denke ich werde etwa 70% Dateien zu 30% Verzeichnisse wählen.</p>
<p><strong>Beispiel:</strong><br />
Wird die <em>Delete()</em> Operation aufgerufen und es wird ein Verzeichnis<br />
gewählt, müssen alle Dateien und Unterverzeichnisse Rekursiv gelöscht<br />
werden (sowohl vom Datenträger als auch aus dem Objektbaum)</p>
<p>Wird die <em>Check()</em> Operation aufgerufen und es wird eine Datei gewählt,<br />
wird nur dieses Objekt mit den Dateien auf dem externen Datenträger verglichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1919954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919954</guid><dc:creator><![CDATA[zitroneneis]]></dc:creator><pubDate>Thu, 01 Jul 2010 13:59:29 GMT</pubDate></item><item><title><![CDATA[Reply to Einen Verzeichnisbaum mit Objekten nachbilden on Thu, 01 Jul 2010 15:04:04 GMT]]></title><description><![CDATA[<p>Klingt doch alles wunderbar!</p>
<p>zitroneneis schrieb:</p>
<blockquote>
<p>In der aufgerufenen Funktion wird dann aus dem Objektbaum eine zufällige Datei bzw.<br />
ein zufälliges Verzeichnis ausgewählt (keine vorgegebenen Wahrscheinlichkeiten), aber<br />
denke ich werde etwa 70% Dateien zu 30% Verzeichnisse wählen.</p>
</blockquote>
<p>Wie wählst du denn aus dem Objektbaum zufällig eine Datei?<br />
Hast du in der Wurzel eine zusätzliche Liste mit allen Einträgen oder<br />
wie willst du sonst das 70% / 30% einhalten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1919989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919989</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 01 Jul 2010 15:04:04 GMT</pubDate></item><item><title><![CDATA[Reply to Einen Verzeichnisbaum mit Objekten nachbilden on Thu, 01 Jul 2010 15:33:57 GMT]]></title><description><![CDATA[<p>der Punkt ist noch offen, weil er von der Implementierung abhängig ist.</p>
<p>Davon ausgehend, dass ich mit 2 multiset/multimap Containern arbeite würde,<br />
hatte hatte ich es mir so vorgestellt, dass die Klasse welche die Container<br />
kapselt hierzu 2 Methoden anbietet:</p>
<ul>
<li><em>iterator getRandomFile();</em></li>
<li><em>iterator getRandomDirectory();</em></li>
</ul>
<p>Die Auswahl welche dieser Methoden aufgerufen wird erfolgt über ein gewichtetes<br />
random(), vom jeweiligen Operation-Objekt aus.</p>
<p>Wie die Methoden arbeiten werden weiß ich noch nicht, weil ich noch<br />
nicht viel mit Containern gearbeitet habe und deswegen die Möglichkeiten<br />
nicht überblicken kann. Aber ich bin sicher, dass es einen Weg geben wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920000</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920000</guid><dc:creator><![CDATA[zitroneneis]]></dc:creator><pubDate>Thu, 01 Jul 2010 15:33:57 GMT</pubDate></item></channel></rss>