<?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[Zugriff auf Dateiinhalt mit operator[]]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe mir eine Klasse geschrieben, die eine ähnliche Funktionalität wie ein vector aufweist, allerdings die Daten in einer Datei gespeichert hält.<br />
Dort habe ich dann z.B. die Funktionen get(unsigned int index) und set(unsigned int index) mit denen ich die entsprechenden Vektorelemente lesen/verändern kann. Dort wird dann die Datei geöffnet und der Inhalt überschrieben oder gelesen.</p>
<p>Nun würde ich ganz gerne per operator[] darauf zugreifen können. Das geht aber erstmal nicht, da ich dort ja eine Referenz auf ein Objekt zurückgebe. Ich kann aber keine Referenz auf ein Objekt zurückgeben, welches sich nicht im Speicher befindet.</p>
<p>Gibt es irgendeine Möglichkeit diese Funktionalität in meine Klasse einzubauen?</p>
<p>Die Alternative wäre get und set für std::vector zu implementieren. Grundidee ist eben, dass ich beide Klassen (std::vector und meine vector-datei Klasse) mit dem gleichen Code verwenden kann und nur den Datentyp ändern muss.</p>
<p>LG plancktum</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/307410/zugriff-auf-dateiinhalt-mit-operator</link><generator>RSS for Node</generator><lastBuildDate>Thu, 06 Aug 2026 19:13:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/307410.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 26 Aug 2012 09:11:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriff auf Dateiinhalt mit operator[] on Sun, 26 Aug 2012 09:11:27 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe mir eine Klasse geschrieben, die eine ähnliche Funktionalität wie ein vector aufweist, allerdings die Daten in einer Datei gespeichert hält.<br />
Dort habe ich dann z.B. die Funktionen get(unsigned int index) und set(unsigned int index) mit denen ich die entsprechenden Vektorelemente lesen/verändern kann. Dort wird dann die Datei geöffnet und der Inhalt überschrieben oder gelesen.</p>
<p>Nun würde ich ganz gerne per operator[] darauf zugreifen können. Das geht aber erstmal nicht, da ich dort ja eine Referenz auf ein Objekt zurückgebe. Ich kann aber keine Referenz auf ein Objekt zurückgeben, welches sich nicht im Speicher befindet.</p>
<p>Gibt es irgendeine Möglichkeit diese Funktionalität in meine Klasse einzubauen?</p>
<p>Die Alternative wäre get und set für std::vector zu implementieren. Grundidee ist eben, dass ich beide Klassen (std::vector und meine vector-datei Klasse) mit dem gleichen Code verwenden kann und nur den Datentyp ändern muss.</p>
<p>LG plancktum</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245557</guid><dc:creator><![CDATA[plancktum]]></dc:creator><pubDate>Sun, 26 Aug 2012 09:11:27 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dateiinhalt mit operator[] on Sun, 26 Aug 2012 09:37:09 GMT]]></title><description><![CDATA[<p>plancktum schrieb:</p>
<blockquote>
<p>Gibt es irgendeine Möglichkeit diese Funktionalität in meine Klasse einzubauen?</p>
</blockquote>
<p>Für Skalare geht es, auch wenn nur mit Proxys.<br />
Für nicht-PODs wird es leider sehr schwer, bzw. gar nicht möglich sein. Sicher, dass das in eine Datei muss? Das ist ein Performance-Killer schlecht hin...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245562</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 26 Aug 2012 09:37:09 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dateiinhalt mit operator[] on Sun, 26 Aug 2012 09:35:51 GMT]]></title><description><![CDATA[<p>Grundsätzlich: Proxy-Objekt zurückgeben, das sich wie eine Referenz verhält. Schau dir mal <code>std::vector&lt;bool&gt;::reference</code> an.</p>
<p>Aber bist du sicher, dass du so auf deine Datei zugreifen willst? Das kann recht langsam werden. Kannst du nicht gleich einen Block ins RAM laden und am Schluss zurückschreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245563</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 26 Aug 2012 09:35:51 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dateiinhalt mit operator[] on Sun, 26 Aug 2012 11:01:26 GMT]]></title><description><![CDATA[<p>Ich weiß, dass es langsam ist, aber ich kann die Objekte nicht alle im Speicher behalten.<br />
Rechenzeit ist nicht das Hauptproblem, sondern der Arbeitsspeicher.<br />
Deswegen eben in Dateien schreiben.</p>
<p>Das mit dem Proxy verstehe ich nicht.</p>
<p>Wird also wohl darauf hinauslaufen, dass ich mir Funktionen get und set für std::vector schreiben muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245587</guid><dc:creator><![CDATA[plancktum]]></dc:creator><pubDate>Sun, 26 Aug 2012 11:01:26 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dateiinhalt mit operator[] on Sun, 26 Aug 2012 11:06:42 GMT]]></title><description><![CDATA[<p>proxy entwurfsmuster:<br />
<a href="http://de.wikipedia.org/wiki/Stellvertreter_%28Entwurfsmuster%29" rel="nofollow">http://de.wikipedia.org/wiki/Stellvertreter_(Entwurfsmuster)</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245588</guid><dc:creator><![CDATA[werfewr]]></dc:creator><pubDate>Sun, 26 Aug 2012 11:06:42 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Dateiinhalt mit operator[] on Sun, 26 Aug 2012 11:17:15 GMT]]></title><description><![CDATA[<p>Ah... Jetzt verstehe ich.</p>
<p>Nun greift meine Vektor-Datei Klasse (nennen wir sie stateVectorFile) auf Objekte names State zu.</p>
<p>Wenn ich jetzt gerne auf ein Objekt obj von Typ stateVectorFile mit obj[i] zugreifen möchte, dann müsste ich dazwischen so ein Proxy-Objekt schalten.</p>
<p>Was kein Problem ist, ist wenige States im Speicher zu behalten. Aber den kompletten vector mit allen States kann ich nicht im Speicher halten.</p>
<p>Wie genau muss ich denn dann darauf zugreifen? Das ist mir noch nicht ganz klar.<br />
Spontan hätte ich eben gesagt, dass solche Proxy-Objekte angelegt werden wenn sie gebraucht werden und dann wird damit gerechnet. Im Hintergrund greifen diese Proxy-Objekte dann auf meine stateVectorFile zu. Wie ist das aber mit dem vector-charakter vereinbar?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245590</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245590</guid><dc:creator><![CDATA[plancktum]]></dc:creator><pubDate>Sun, 26 Aug 2012 11:17:15 GMT</pubDate></item></channel></rss>