<?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[datenbank als std::list]]></title><description><![CDATA[<p>Hallo<br />
Ich versuche gerade auf c++ umzusteigen und finde mich in den klassen überhaupt nicht zurecht.</p>
<p>was ich machen möchte ist eine kleine selbst gebastelte datenbank erstellen.</p>
<p>einträge wären:<br />
name adresse telefonnummer ....</p>
<p>dafür könnte ich natürlich einen struct eine classe oder einfach ein array nehmen und das ganze in eine std::list speichern.</p>
<p>nur bin ich ein fauler mensch und möchte mir die sortier methoden nicht selbst schreiben.<br />
list hat ja bereits eine sort methode.<br />
allerdings frage ich mich wie ich dann nach einem bestimmten eintrag sortieren kann wenn ich in die liste biespielsweise einen struct speichere.</p>
<p>Oder gibt es einfach eine bessere klasse dafür?</p>
<p>lg<br />
Verucca</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/176260/datenbank-als-std-list</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 18:30:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/176260.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 19 Mar 2007 14:22:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to datenbank als std::list on Mon, 19 Mar 2007 14:22:30 GMT]]></title><description><![CDATA[<p>Hallo<br />
Ich versuche gerade auf c++ umzusteigen und finde mich in den klassen überhaupt nicht zurecht.</p>
<p>was ich machen möchte ist eine kleine selbst gebastelte datenbank erstellen.</p>
<p>einträge wären:<br />
name adresse telefonnummer ....</p>
<p>dafür könnte ich natürlich einen struct eine classe oder einfach ein array nehmen und das ganze in eine std::list speichern.</p>
<p>nur bin ich ein fauler mensch und möchte mir die sortier methoden nicht selbst schreiben.<br />
list hat ja bereits eine sort methode.<br />
allerdings frage ich mich wie ich dann nach einem bestimmten eintrag sortieren kann wenn ich in die liste biespielsweise einen struct speichere.</p>
<p>Oder gibt es einfach eine bessere klasse dafür?</p>
<p>lg<br />
Verucca</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1248430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1248430</guid><dc:creator><![CDATA[Verucca]]></dc:creator><pubDate>Mon, 19 Mar 2007 14:22:30 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Mon, 19 Mar 2007 14:32:30 GMT]]></title><description><![CDATA[<p>Man kann dir hier nur anraten dich mit der Standardbibliothek zu beschäftigen.</p>
<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-143816.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-143816.html</a><br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-146604.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-146604.html</a><br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-150106.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-150106.html</a></p>
<p>Da wird alles erklärt und du wirst dann das ganze umsetzen können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1248442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1248442</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 19 Mar 2007 14:32:30 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Mon, 19 Mar 2007 15:22:07 GMT]]></title><description><![CDATA[<p>naja bin mir nicht ganz sicher wie mir das jetzt helfen soll.</p>
<p>ich kenne verkettete listen aus anderen sprachen - auch arrays oder vektoren sind mir bekannt.<br />
das ich das ganze mit iteratoren durchgehen kann ist mir auch klar.</p>
<p>Ich hab mir einfach gedacht list ist wohl das geeignetste - zumindes von den objekten die ich bisher gesehen hab.<br />
die frage war einfach ob ich bzw. wie ich mit einer eigenen struktur die ich in eine liste speichere die sort methode verwenden kann - und welche struktur ich dann am bessten nehme um das in eine liste zu speichern.</p>
<p>also kann ich wenn ich ein struct der form:<br />
string titel<br />
string adresse<br />
string name<br />
habe der sort methode im list objekt sagen kann er soll adresse zum sortieren verwenden.</p>
<p>oder hab ich da was falsch verstanden?</p>
<p>lg<br />
Verucca</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1248492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1248492</guid><dc:creator><![CDATA[Verucca]]></dc:creator><pubDate>Mon, 19 Mar 2007 15:22:07 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Mon, 19 Mar 2007 15:34:55 GMT]]></title><description><![CDATA[<p>Nach was sortiert werden soll, kannst du mit einem Prädikat BinPred p bestimmen:<br />
<a href="http://www.cppreference.com/cpplist/sort.html" rel="nofollow">http://www.cppreference.com/cpplist/sort.html</a></p>
<p>Deshalb sollte man sich mit der Standardlib beschäftigen, da dort ganz bestimmte Konzepte angewendet werden. Diese Konzepte gelten auch für andere Algorithmen. Auch muß man sich mit Operator-Überladung auskennen (ist einfach, muß man aber einmal verstehen) da dies für die Sortier-Algos in C++ benötigt wird.</p>
<p>Wenn du einen vector benutzt, kannst du diesen natürlich auch sortieren lassen. Da gibts Sortieralgorithmen in der Std-Lib. Du könntest auch eine map benutzen, die Schlüssel-Wert-Paare speichert.</p>
<p>Die drei Links oben sind halt Tutorials, die einem alles soweit erklären. Deshalb helfen sie dir weiter!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1248504</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1248504</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 19 Mar 2007 15:34:55 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Mon, 19 Mar 2007 15:44:26 GMT]]></title><description><![CDATA[<p>std::list halte ich für sowas für ungeeignet. Immerhin kann man darin überhaupt nicht rumspringen, das heißt die Sortierung nützt garnix. Man muß sowieso immer von vorne bis zum gesuchten Element hinlaufen. Nahezu jeder andere Container dürfte besser geeignet sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1248511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1248511</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Mon, 19 Mar 2007 15:44:26 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Mon, 19 Mar 2007 16:05:28 GMT]]></title><description><![CDATA[<p>Hier mal ein Beispiel, für einen Denkanstoss:</p>
<pre><code class="language-cpp">bool adress_pred(const Person &amp;p1, const Person &amp;p2)
{
    return p1.get_adresse() &lt; p2.get_adresse();
}

bool name_pred(const Person &amp;p1, const Person &amp;p2)
{
    return p1.get_name() &lt; p2.get_name();
}

std::list&lt;Person&gt; adressen;
//...

adressen.sort(adress_pred);   // nach Adresse sortieren
adressen.sort(name_pred);     // nach Name sortieren
</code></pre>
<p>Standardlib lernen würde ich trotzdem, sonst kann man C++ nicht ausreizen und nicht vernünftig arbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1248514</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1248514</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 19 Mar 2007 16:05:28 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Mon, 19 Mar 2007 15:58:16 GMT]]></title><description><![CDATA[<p>Jester schrieb:</p>
<blockquote>
<p>std::list halte ich für sowas für ungeeignet. Immerhin kann man darin überhaupt nicht rumspringen, das heißt die Sortierung nützt garnix. Man muß sowieso immer von vorne bis zum gesuchten Element hinlaufen. Nahezu jeder andere Container dürfte besser geeignet sein.</p>
</blockquote>
<p>Naja, Verruca hat in vector keine sort-Methode gesehen, also geht er/sie davon aus, das man ihn nicht einfach sortieren kann. Hat halt keinen Schimmer von der Standardlib und wie man diese mit einer Zeile Code sortieren kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1248521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1248521</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 19 Mar 2007 15:58:16 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Mon, 19 Mar 2007 20:29:22 GMT]]></title><description><![CDATA[<p>hi<br />
Danke für die vielen Antworten.<br />
Und ja ich hab keine Ahnung von der Std.<br />
Auch hab ich keinen dunst von c++ - ich muss mich allerdings jetzt schnell einarbeiten.<br />
Ich hab vorher Java, Delphi und ein paar andere sachen gemacht, deshalb steh ich etwas wie die Kuh vorm Dorf .....</p>
<p>ad. List</p>
<blockquote>
<p>std::list halte ich für sowas für ungeeignet.</p>
</blockquote>
<p>deshalb hab ich ja mal nach einer classe gefragt die dafür geeignet wäre .....<br />
herumspringen muss ich eigentlich eh nicht - ja suchen sollte man schon können, aber die sortierung ist vor allem für die ausgabe wichtig und ich erwarte keine großen datenstrukturen.</p>
<p>Jetzt zu dem codebeispiel - das einer offenbarung gleicht <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>
<blockquote>
<p>bool adress_pred(const Person &amp;p1, const Person &amp;p2)<br />
{<br />
return p1.get_adresse() &lt; p2.get_adresse();<br />
}</p>
<p>bool name_pred(const Person &amp;p1, const Person &amp;p2)<br />
{<br />
return p1.get_name() &lt; p2.get_name();<br />
}</p>
<p>std::list&lt;Person&gt; adressen;<br />
//...</p>
<p>adressen.sort(adress_pred); // nach Adresse sortieren<br />
adressen.sort(name_pred); // nach Name sortieren</p>
</blockquote>
<p>nach diesem vorschlag soll ich eine klasse schreiben die seter und geter beinhaltet.<br />
( bzw. scheint es egal zu sein im falle einse structs geb ich hald die referenz auf die variablen and ).<br />
und dann übergeb ich dem sort die methode wie sortiert werden soll - das ist genial - da kommt wohl eine der stärken von c++ mit dem umgang mit generics heraus.</p>
<p>jedenfalls muss ich mir jetzt noch ein bisschen methoden für stringzerlegung anschauen und schon kann ich loslegen.</p>
<p>ganz durchblicken tu ich noch nicht was ich jetzt wirklich verwenden soll - aber ich denke mal eine liste ist für den anfang ganz ok.<br />
ein vektor hat ja scheinbar den nachteil, dass ich wieder schwerer elemente einfügen kann.<br />
und den index brauch ich bei meinem beispiel eh nicht, weil ich ja sowieso nach dem richtigen element suchen muss und da werde ich wohl eh die ganze liste durchgehen müssen.<br />
um schnell zu suchen müsste ich eh einen binärbaum nehmen und wie gesagt erwarte ich nicht sehr große datenmengen.</p>
<p>Danke nochmals - da ich keinen dunst von c++ hab werde ich wohl noch viele viele fragen haben <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>
<p>lg<br />
Verucca</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1248761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1248761</guid><dc:creator><![CDATA[Verucca]]></dc:creator><pubDate>Mon, 19 Mar 2007 20:29:22 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Mon, 19 Mar 2007 20:54:50 GMT]]></title><description><![CDATA[<p>Crashkurs für Container und Algorithmen in C++:<br />
<a href="http://www.kharchi.de/cppratgeber2.htm" rel="nofollow">http://www.kharchi.de/cppratgeber2.htm</a><br />
<a href="http://www.kharchi.de/iteratoren.html" rel="nofollow">http://www.kharchi.de/iteratoren.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1248775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1248775</guid><dc:creator><![CDATA[Crashkurs]]></dc:creator><pubDate>Mon, 19 Mar 2007 20:54:50 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Tue, 20 Mar 2007 01:40:40 GMT]]></title><description><![CDATA[<p>Datenbanken und C++?<br />
-&gt; SQLite (is C, gibt aber C++ Wrapper)<br />
-&gt; Boost.MultiIndex<br />
-&gt; std::map/set, xxx::hash_map/hash_set</p>
<p>In absteigender Reihenfolge der Mächtigkeit <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>
<p>p.S.: SQLite kann auch &quot;in memory&quot; Datenbanken und ist recht flott. Sicher langsamer als Boost.MultiIndex oder ein einfacher Standardcontainer, aber immer noch recht schnell für ne Datenbank, und du kannst SQL verwenden zum joinen, filtern und sortieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1248851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1248851</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 20 Mar 2007 01:40:40 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Mon, 26 Mar 2007 09:11:56 GMT]]></title><description><![CDATA[<p>Hallo nochmal<br />
Ich bin gerade am herumprobieren mit der sort funktion.<br />
2 fragen hab ich dazu zum besseren verständnis:<br />
1.<br />
funktioniert wunderbar nur sortiert der natürlich case sensitive.<br />
wie sortiere ich nicht case sensitive?</p>
<pre><code>return strupr(p1.getTitle()) &lt; strupr(p2.getTitle());
</code></pre>
<p>funktioniert nicht in dem zusammenhang oder ich mach etwas falsch :).</p>
<p>2. mit den zu übergebenden typen hab ich noch probleme<br />
so hat es nämlich nicht funktioniert:</p>
<pre><code>bool interpret_pred(const entry &amp;p1, const entry &amp;p2)
{
    return p1.getInterpret() &lt; p2.getInterpret();
}
</code></pre>
<p>wenn ich das ohne const anschreibe funktioniert es.<br />
wie soll ich das const in dem zusammenhang verstehen?</p>
<p>Danke<br />
Verucca</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1252735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252735</guid><dc:creator><![CDATA[Verucca]]></dc:creator><pubDate>Mon, 26 Mar 2007 09:11:56 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Mon, 26 Mar 2007 09:16:10 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Datenbanken und C++?<br />
-&gt; SQLite (is C, gibt aber C++ Wrapper)<br />
-&gt; Boost.MultiIndex<br />
-&gt; std::map/set, xxx::hash_map/hash_set</p>
<p>In absteigender Reihenfolge der Mächtigkeit <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>
<p>p.S.: SQLite kann auch &quot;in memory&quot; Datenbanken und ist recht flott. Sicher langsamer als Boost.MultiIndex oder ein einfacher Standardcontainer, aber immer noch recht schnell für ne Datenbank, und du kannst SQL verwenden zum joinen, filtern und sortieren.</p>
</blockquote>
<p>es gibt auch noch die <a href="http://dtemplatelib.sourceforge.net/" rel="nofollow">DTL</a>. Wobei ich nicht weiß, wie gut die 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/1252742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252742</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Mon, 26 Mar 2007 09:16:10 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Mon, 26 Mar 2007 09:17:21 GMT]]></title><description><![CDATA[<p>@1: Woher stammt denn die strupr()-Funktion (und wie ist sie definiert)? Und was für Fehler gibt es mit diesem Konstrukt?</p>
<p>@2: Setz mal die Methode getInterpret() (und die übrigen Getter-Methoden) deiner Person-Klasse const:</p>
<pre><code class="language-cpp">class Person
{
...
public:
  string getInterpret() /*hier:*/const
  { return m_interpret; }
...
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1252744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252744</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 26 Mar 2007 09:17:21 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Mon, 26 Mar 2007 09:18:30 GMT]]></title><description><![CDATA[<p>Wenn du nicht casesensitive vergleichen willst, mach doch vorher die beiden strings komplett upper- oder lowercase. (temporär versteht sich)</p>
<p>const heißt, das die entries nicht verändert werden. Anscheinend sind deine getter nicht const, so das der compiler berechtigterweise dich davor abhält, eine verändernde Funktion aufzurufen.</p>
<p>Entweder du machst die Getter const (weil getter meistens nichts ändern, sondern nur was zurück geben), oder du machst die parameter nicht-const (was ich aber unlogisch finde).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1252746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252746</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 26 Mar 2007 09:18:30 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Mon, 26 Mar 2007 09:26:02 GMT]]></title><description><![CDATA[<p>Tip: <a href="http://www.boost.org/doc/html/string_algo/usage.html#id2742674" rel="nofollow">http://www.boost.org/doc/html/string_algo/usage.html#id2742674</a></p>
<p>oder mit der Stdlib:</p>
<pre><code class="language-cpp">std::string s (&quot;HaLLeLuJa&quot;);

std::transform (s.begin(),s.end(), s.begin(), tolower);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1252750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252750</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 26 Mar 2007 09:26:02 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Mon, 26 Mar 2007 09:51:11 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<pre><code class="language-cpp">std::transform (s.begin(),s.end(), s.begin(), tolower);
</code></pre>
</blockquote>
<p>Wird u.U. schiefgehen, wenn die Implementierung tolower nicht als Funktion sondern nur als Makro anbietet (keine Ahnung ob das durch den Standard erlaubt ist wenn in der Definition von &quot;the tolower function&quot; die Rede ist, aber bei bestimmten G++-Versionen ist es der Fall). Dann einfach eine eigene (inline-)Funktion hernehmen, die tolower aufruft <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1252766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252766</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 26 Mar 2007 09:51:11 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Mon, 26 Mar 2007 10:54:58 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Da gibts doch noch was von Hume<br />
<a href="http://fara.cs.uni-potsdam.de/~kaufmann/stricmp.h" rel="nofollow">http://fara.cs.uni-potsdam.de/~kaufmann/stricmp.h</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1252816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252816</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 26 Mar 2007 10:54:58 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Mon, 26 Mar 2007 11:53:10 GMT]]></title><description><![CDATA[<p>Wenn du die Liste immer sortiert haben willst bietet sich vielleicht ein std::set oder std::multiset an. Kannst dir die beiden ja mal ansehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1252876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252876</guid><dc:creator><![CDATA[Shinja]]></dc:creator><pubDate>Mon, 26 Mar 2007 11:53:10 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Tue, 27 Mar 2007 15:57:01 GMT]]></title><description><![CDATA[<p>Hi<br />
Ich arbeite mich langsam so durch die std</p>
<p>ich wollte das als keymap implementieren ( zumindestens für meine entry klasse um die dann in eine list einzufügen )</p>
<p>allerdings bin ich drauf gekommen, dass keymap das immer sortiert.<br />
das ist ein problem, weil ich eine methode toString einbauen wollte, die mir gleich die aus allen values der keymap einen string baut.<br />
nur sind die natürlich alphabetisch sortiert und das ist ein problem für mich.<br />
gibt es eine möglichkeit das zu unterbinden bzw. die reihenfolge der einträge so zu bekommen wie sie angelegt wurden - oder kann ich die keymap in dem fall vergessen?.</p>
<p>lg<br />
Verucca</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1253989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1253989</guid><dc:creator><![CDATA[Verucca]]></dc:creator><pubDate>Tue, 27 Mar 2007 15:57:01 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Tue, 27 Mar 2007 16:11:44 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>also wenn Du keine Sortierung nach keyvalue haben möchtest, kannst Du einfach einen vector nehmen - allerdings sorgt der auch nicht für &quot;uniqueness&quot;:</p>
<pre><code class="language-cpp">std::vector&lt;pair&lt;keyval, data&gt; &gt; v;
</code></pre>
<p>Wenn ich mich nicht täusche, gibt's in der STL keinen Container, der &quot;uniqueness&quot; sichert trotzdem nicht sortiert...<br />
Zur Not (wenn es nicht beim Eintragen schon erkannt werden soll) kannst Du das mittels unique() hinterher korrigieren.</p>
<p>Oder Du nutzt eine</p>
<pre><code class="language-cpp">std::map&lt;keyval, pair&lt;entryNo, data&gt; &gt; m;
</code></pre>
<p>oder gleich</p>
<pre><code class="language-cpp">struct keyValAndEntryNo {
   keyval k;
   entryNo e;
};

std::multimap&lt;keyValAndEntryNo, data&gt; &gt; m;
</code></pre>
<p>(mit einem geeigneten Komparator (der nur k vergleicht))</p>
<p>... und sortierst bei der Nutzung. (ungeschickterweise ist dabei entryNo nicht mehr eindeutig)</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1253993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1253993</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 27 Mar 2007 16:11:44 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Tue, 27 Mar 2007 16:31:14 GMT]]></title><description><![CDATA[<p>hey c++ ist echt cool <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>
<p>aber wie iterier ich dann über das ding?</p>
<pre><code>vector&lt;string,string&gt;::iterator iter;
for( iter = keymap.begin(); iter != keymap.end(); ++iter ) 
{
    cout &lt;&lt; &quot;Key: '&quot; &lt;&lt; iter-&gt;first &lt;&lt; &quot;', Value: &quot; &lt;&lt; iter-&gt;second &lt;&lt; endl; 
}
</code></pre>
<p>so geht es vermutlich nicht - aber wie deffinier ich den iterator richtig?</p>
<p>lg<br />
verucca</p>
<p>edit:<br />
und scheinbar hab ich dann nicht so eine praktische find methode - die müsste ich mir dann wohl selbst schreiben.<br />
das war ja das schöne an der keymap &quot;keymap.find(key)&quot; usw</p>
<p>und ich seh schon so wird das gemacht:</p>
<pre><code>vector&lt;pair&lt;string, string&gt; &gt;::iterator iter;
  	for( iter = keymap.begin(); iter != keymap.end(); ++iter ) 
  	{
    cout &lt;&lt; &quot;Key: '&quot; &lt;&lt; iter-&gt;first &lt;&lt; &quot;', Value: &quot; &lt;&lt; iter-&gt;second &lt;&lt; endl; 
    }
</code></pre>
<p>allerdings werd ich mir wohl alle funktionen einer keymap selbst schreiben müssen.<br />
also find usw....<br />
naja egal - es ist brauchbar..<br />
lg<br />
Verucca</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254002</guid><dc:creator><![CDATA[Verucca]]></dc:creator><pubDate>Tue, 27 Mar 2007 16:31:14 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Tue, 27 Mar 2007 16:28:56 GMT]]></title><description><![CDATA[<p>Naja, es gibt doch auch ein find() in der STL:<br />
<a href="http://www.cppreference.com/cppalgorithm/index.html" rel="nofollow">http://www.cppreference.com/cppalgorithm/index.html</a></p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254008</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 27 Mar 2007 16:28:56 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Tue, 27 Mar 2007 17:30:57 GMT]]></title><description><![CDATA[<p>Nach was willst du denn suchen? Eine map hat Schlüssel, weil man nach ebend diesen eigentlich suchen will. Und find von map ist dann genau richtig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254051</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254051</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 27 Mar 2007 17:30:57 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Tue, 27 Mar 2007 19:12:36 GMT]]></title><description><![CDATA[<p>naja das ganze dient ja haupsächlich dazu cpp zu lernen :).</p>
<p>aber ich schreib immer noch an dieser minni datenbank<br />
funtioniert ja schon alles ganz gut, nur möchte ich das jetzt etwas generischer angehen - etwas hald ....</p>
<p>ich erstelle also eine classe entry die im prinzip als keymap funktioniert.<br />
man kann also einen key erstellen und values speichern<br />
Beispiel:<br />
adress foo<br />
name bar<br />
usw...<br />
als methoden;<br />
string get(string key)<br />
set(string key, string value)<br />
insert (string key) // adds a new keyvalue to database.<br />
delete (string key) // removes a key.<br />
string toString() // liefert einen string über den ganzen datensatz zurück.</p>
<p>der construktor von dem datenbank objekt wird jetzt mit der entry klasse gefüttert.<br />
die datenbank kann jetzt die key felder auslesen und weiß genau was verwaltet werden soll.<br />
in eine std::list wird dann classe entry als datensatz eingefügt.</p>
<p>jetzt werden noch suchmethoden und sortieren bzw. suchen mit sortierter ausgabe implementiert und schon ist das fertig.<br />
dann noch methoden database.loadfromfile, database.savetofile und es ist halbwegs komplett.</p>
<p>für die entry klasse hab ich mir zuerst eine keymap gedacht - sozusagen ein wrapper für die map mit ein paar mehr methoden ( toString zum beispiel )<br />
bis ich dauf gekommen bin, das das sortiert wird war die idee eh ganz nett - aber schließlich muss der datensatz schon die reihenfolge beibehalten ... - sonst gibts beim speichern und laden vom file probleme - da würden dann irgendwann falsche werte rein kommen usw zumindestens wenn man sich hier eine sinnvolle reihenfolge vorstellt.</p>
<p>vorname nachname adress plz ......</p>
<p>ich beweg mich eh schön langsam durch die std - man braucht hald ein projekt um eine sprache zu lernen <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>
<p>lg<br />
Verucca</p>
<p>edit:</p>
<p>aber gleich eine frage dazu.<br />
wie soll ich bei einem pair den zugreifen auf das element?<br />
std::find liefert einen iterator zurück ... ok.</p>
<pre><code>vector&lt;pair&lt;string, string&gt; &gt;::iterator iter;
iter = find( keymap.begin()-&gt;first, keymap.end()-&gt;first, &quot;type&quot; );
</code></pre>
<p>wie finde ich da die elemente - ist eine interessante methode - ich hätte ja klassisch ein 2 dimensionales array genommen ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254106</guid><dc:creator><![CDATA[Verucca]]></dc:creator><pubDate>Tue, 27 Mar 2007 19:12:36 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Tue, 27 Mar 2007 20:09:33 GMT]]></title><description><![CDATA[<p>Warum benutzt du nicht die find von map? Aber was du mit &quot;elemente&quot; meinst, weiß ich nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254175</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 27 Mar 2007 20:09:33 GMT</pubDate></item><item><title><![CDATA[Reply to datenbank als std::list on Tue, 27 Mar 2007 20:41:19 GMT]]></title><description><![CDATA[<p>naja map kann ich ja nicht nehmen, weil map ja sortiert.<br />
und elemente hab ich glaub ich falsch ausgedrückt<br />
make_pair(x,y) hab ich vermutlich gemeint.</p>
<p>wenn ich das in einen vector verpacke, weiß ich nicht so genau wie ich dem ganzen etwas zuweisen kann.<br />
rausholen kann ich das ja mit dem iterator - aber wie schreib ich dann drauf?</p>
<p>lg<br />
Verucca</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1254202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1254202</guid><dc:creator><![CDATA[Verucca]]></dc:creator><pubDate>Tue, 27 Mar 2007 20:41:19 GMT</pubDate></item></channel></rss>