<?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[Vorschläge für Datenstruktur erbeten.]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte einen Vokabeltrainer programmieren. Die Vokabeln sind in einer Textdatei gespeichert, in der Form:</p>
<pre><code>food, meal     Essen, Mahlzeit
to put         setzen, stellen, legen
to give        geben
</code></pre>
<p>Das Trennzeichen für die Sprachen ist der Tabulator, die Worte sind bei mehreren Bedeutungen durch Kommata getrennt.</p>
<p>Nun möchte ich mir Anregungen holen, wie Ihr die Vokabeln für den Programmablauf speichern würdet.<br />
Ich bin nicht gänzlich ideenlos, mir fällt im Moment ein:<br />
Eine Zeile könnte man als einen Datensatz ansehen, der aus zwei Spalten besteht:</p>
<pre><code class="language-cpp">class Column
{
	vector &lt;string&gt; column;
};

class Dataset
{
	Column left, right;
};
</code></pre>
<p>So könnte man wählen, welche Sprache abgefragt und welche beantwortet wird.</p>
<p>Welche Datenstruktur würdet Ihr wählen?<br />
Gruß,<br />
D.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/245333/vorschläge-für-datenstruktur-erbeten</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 21:52:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/245333.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 12 Jul 2009 21:46:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vorschläge für Datenstruktur erbeten. on Sun, 12 Jul 2009 21:46:44 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte einen Vokabeltrainer programmieren. Die Vokabeln sind in einer Textdatei gespeichert, in der Form:</p>
<pre><code>food, meal     Essen, Mahlzeit
to put         setzen, stellen, legen
to give        geben
</code></pre>
<p>Das Trennzeichen für die Sprachen ist der Tabulator, die Worte sind bei mehreren Bedeutungen durch Kommata getrennt.</p>
<p>Nun möchte ich mir Anregungen holen, wie Ihr die Vokabeln für den Programmablauf speichern würdet.<br />
Ich bin nicht gänzlich ideenlos, mir fällt im Moment ein:<br />
Eine Zeile könnte man als einen Datensatz ansehen, der aus zwei Spalten besteht:</p>
<pre><code class="language-cpp">class Column
{
	vector &lt;string&gt; column;
};

class Dataset
{
	Column left, right;
};
</code></pre>
<p>So könnte man wählen, welche Sprache abgefragt und welche beantwortet wird.</p>
<p>Welche Datenstruktur würdet Ihr wählen?<br />
Gruß,<br />
D.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741773</guid><dc:creator><![CDATA[Datenstrukturpraktikant]]></dc:creator><pubDate>Sun, 12 Jul 2009 21:46:44 GMT</pubDate></item><item><title><![CDATA[Reply to Vorschläge für Datenstruktur erbeten. on Sun, 12 Jul 2009 21:51:13 GMT]]></title><description><![CDATA[<p>Warum so kompliziert? Um die Daten erstmal festzuhalten würde ich eine Struktur anlegen, die in etwa so aussieht:</p>
<pre><code class="language-cpp">///// Unter MSVS-C++ das Alignment beachten! /////
struct Vokabel
{
     std::string eng;
     std::vector&lt;std::string&gt; deu;
};
</code></pre>
<p>Dann einfach einen Vektor der sich auf das Objekt der Struktur bezieht und ab geht die Post. Dann haste alles schön dynamisch in einem Vektor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741776</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sun, 12 Jul 2009 21:51:13 GMT</pubDate></item><item><title><![CDATA[Reply to Vorschläge für Datenstruktur erbeten. on Sun, 12 Jul 2009 21:54:38 GMT]]></title><description><![CDATA[<p>Das Problem ist, dass du nicht eine schöne 1:1-Abbildung von Schlüssel und Wert hast, sonst wäre <code>std::map</code> wohl der Container erster Wahl. Aber gibt es bei dir eine Richtung, in der du bevorzugt arbeitest (z.B. deutsch abfragen, englisch prüfen)? Dann kämst du einer Map schon nahe. Wenn du dann noch Synonyme trennst (für &quot;Essen&quot; und &quot;Mahlzeit&quot; zwei Einträge), kannst du jedem deutschen Wort eine Menge von englischen zuordnen.</p>
<p>Wenn du beide Richtungen oft brauchst, wäre vielleicht Boost.Bimap eine Überlegung wert. Wobei du das eigentlich mit normalen Vectoren hinbekommst, wenn auch vielleicht weniger performant.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741778</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 12 Jul 2009 21:54:38 GMT</pubDate></item><item><title><![CDATA[Reply to Vorschläge für Datenstruktur erbeten. on Sun, 12 Jul 2009 22:01:43 GMT]]></title><description><![CDATA[<p>Das ganze soll möglichst universell sein, d.h. keine Festlegung auf eine konkrete Sprache (Englisch ist nur ein Beispiel), für beide Sprachen soll die Möglichkeit bestehen mehrere Bedeutungen abzuspeichern und die Abfragerichtung (z.B. Englisch-&gt;Deutsch, Deutsch-&gt;Englisch) soll ebenfalls beliebig sein.<br />
Eventuell wird das ein Open Source Projekt oder so, der User beliebiger Nationalität kann sich dann selbst seinen Vokabeltest in Form einer einfachen Textdatei(UTF8 Format) zusammenstellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741787</guid><dc:creator><![CDATA[Datenstrukturpraktikant]]></dc:creator><pubDate>Sun, 12 Jul 2009 22:01:43 GMT</pubDate></item><item><title><![CDATA[Reply to Vorschläge für Datenstruktur erbeten. on Sun, 12 Jul 2009 22:07:25 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>Warum so kompliziert? Um die Daten erstmal festzuhalten würde ich eine Struktur anlegen, die in etwa so aussieht:</p>
<pre><code class="language-cpp">///// Unter MSVS-C++ das Alignment beachten! /////
struct Vokabel
{
     std::string eng;
     std::vector&lt;std::string&gt; deu;
};
</code></pre>
<p>Dann einfach einen Vektor der sich auf das Objekt der Struktur bezieht und ab geht die Post. Dann haste alles schön dynamisch in einem Vektor.</p>
</blockquote>
<p>Deinem Vorschlag nach würde für mich sowas in Frage kommen:</p>
<pre><code class="language-cpp">struct Dataset
{
     std::vector&lt;std::string&gt; left_column;
     std::vector&lt;std::string&gt; right_column;
};
</code></pre>
<p>Werde ich mal begrübeln, ob das vorteilhaft ist. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741793</guid><dc:creator><![CDATA[Datenstrukturpraktikant]]></dc:creator><pubDate>Sun, 12 Jul 2009 22:07:25 GMT</pubDate></item><item><title><![CDATA[Reply to Vorschläge für Datenstruktur erbeten. on Sun, 12 Jul 2009 22:08:39 GMT]]></title><description><![CDATA[<p>Mit meiner Methode und wide-char sollte das keine Probleme ergeben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741794</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sun, 12 Jul 2009 22:08:39 GMT</pubDate></item><item><title><![CDATA[Reply to Vorschläge für Datenstruktur erbeten. on Sun, 12 Jul 2009 22:18:21 GMT]]></title><description><![CDATA[<p>Okay. Du solltest als erstes davon wegkommen, zwei Spalten zu speichern. Diese müssen nämlich ständig synchron gehalten werden (gleiche Anzahl Elemente). Wenn du stattdessen eine Spalte mit jeweils zwei Wortmengen als Elementtyp hast, bist du schon flexibler.</p>
<p>Mit &quot;Wortmengen&quot; meine ich eine Anzahl von Worten, da du ja pro Begriff nicht auf ein Wort beschränkt bist, sondern Synonyme nutzen kannst.</p>
<pre><code class="language-cpp">typedef std::vector&lt;std::string&gt; Wortmenge;
</code></pre>
<p>Hier einige Möglichkeiten:</p>
<pre><code class="language-cpp">// Paar, das zwei Wortmengen verbindet. Nur zusammengesetzter Typ, keine zusätzliche Funktionalität.
typedef std::pair&lt;Wortmenge, Wortmenge&gt; Eintrag;

// Klasse, stärkere Kapselung, mehr Funktionen.
class Eintrag
{
    private:
        Wortmenge Begriff1;
        Wortmenge Begriff2;

    public:
        Eintrag(const std::string&amp; KommaseparierteListeFuerWortmenge1,
                const std::string&amp; KommaseparierteListeFuerWortmenge2);
        void FuegeWort1Hinzu(const std::string&amp; Wort);
        void FuegeWortmenge1Hinzu(const std::string&amp; KommaseparierteListe);
}
</code></pre>
<p>Nur mal so als Anregung. Mit der Klasse kannst du schön alles kapseln, und dann zum Beispiel mit der folgenden Zeile einen neuen Eintrag erstellen.</p>
<pre><code class="language-cpp">Eintrag NeuerEintrag(&quot;to put&quot;, &quot;setzen, stellen, legen&quot;);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1741799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741799</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 12 Jul 2009 22:18:21 GMT</pubDate></item><item><title><![CDATA[Reply to Vorschläge für Datenstruktur erbeten. on Sun, 12 Jul 2009 22:34:26 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<pre><code class="language-cpp">typedef std::pair&lt;Wortmenge, Wortmenge&gt; Eintrag;
</code></pre>
</blockquote>
<p>Wie kommst du immer auf diese genialen Ideen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741805</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sun, 12 Jul 2009 22:34:26 GMT</pubDate></item><item><title><![CDATA[Reply to Vorschläge für Datenstruktur erbeten. on Sun, 12 Jul 2009 22:33:28 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>Wie kommst du imemr auf diese genialen Ideen?</p>
</blockquote>
<p>So wahnsinnig genial ist das eigentlich gar nicht. Es liegt doch irgendwie nahe, für zwei zusammengehörige Dinge ein Paar zu verwenden, oder nicht? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Auf diese Weise muss man sich nicht für alles eine eigene Klasse schreiben (gleiches gilt für <code>boost::tuple</code> ). Obwohl ich das trotzdem oft tue, weil mir <code>first</code> und <code>second</code> für viele Fälle zu wenig aussagekräftig ist. Beim Beispiel hier würde ich sowieso eher die grosse Klasse verwenden. Vielleicht noch etwas sinnvollere Funktionsnamen wählen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1741808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1741808</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 12 Jul 2009 22:33:28 GMT</pubDate></item></channel></rss>