<?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[std::map]]></title><description><![CDATA[<p>Hallo,<br />
habe folgendes Problem.<br />
Würde gerne einer struktur einen vector zuordnen und das in einer map ablegen.<br />
Also so:</p>
<p>struct _struktur_;<br />
typedef vector&lt;_eine_andere_struktur&gt; _vect_;</p>
<p>map&lt;_struktur_,_vect_&gt; _mmap_;</p>
<p>Nun haut das aber leider nicht hin.<br />
Welche andere Möglichkeit habe ich, um die struktur mit dem vector zu paaren?</p>
<p>Danke<br />
T.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/241957/std-map</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 05:19:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/241957.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 28 May 2009 06:11:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::map on Thu, 28 May 2009 06:11:55 GMT]]></title><description><![CDATA[<p>Hallo,<br />
habe folgendes Problem.<br />
Würde gerne einer struktur einen vector zuordnen und das in einer map ablegen.<br />
Also so:</p>
<p>struct _struktur_;<br />
typedef vector&lt;_eine_andere_struktur&gt; _vect_;</p>
<p>map&lt;_struktur_,_vect_&gt; _mmap_;</p>
<p>Nun haut das aber leider nicht hin.<br />
Welche andere Möglichkeit habe ich, um die struktur mit dem vector zu paaren?</p>
<p>Danke<br />
T.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717005</guid><dc:creator><![CDATA[Theresa]]></dc:creator><pubDate>Thu, 28 May 2009 06:11:55 GMT</pubDate></item><item><title><![CDATA[Reply to std::map on Thu, 28 May 2009 06:24:08 GMT]]></title><description><![CDATA[<blockquote>
<p>Nun haut das aber leider nicht hin.</p>
</blockquote>
<p>Warum? Compiler Error?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717009</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Thu, 28 May 2009 06:24:08 GMT</pubDate></item><item><title><![CDATA[Reply to std::map on Thu, 28 May 2009 06:31:34 GMT]]></title><description><![CDATA[<p>compiler error</p>
<p>map&lt;_Key,_T&gt;</p>
<p>1. Wert kein _Key Value</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717012</guid><dc:creator><![CDATA[Theresa]]></dc:creator><pubDate>Thu, 28 May 2009 06:31:34 GMT</pubDate></item><item><title><![CDATA[Reply to std::map on Thu, 28 May 2009 06:45:48 GMT]]></title><description><![CDATA[<p>Der Key muss verschiedene Kriterien erfüllen (z.B. den &lt; operator implementieren oder natürlicherweise haben).<br />
<a href="http://www.cplusplus.com/reference/stl/map/" rel="nofollow">http://www.cplusplus.com/reference/stl/map/</a></p>
<p>Edit: Zeig doch mal dein struct, welches der Key sein soll.</p>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717017</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Thu, 28 May 2009 06:45:48 GMT</pubDate></item><item><title><![CDATA[Reply to std::map on Thu, 28 May 2009 06:54:48 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">[code]private:
	//wie lautet die hex-codierung und der plain-text für die labels?
	typedef struct __CommandLabelContent__
	{
              //components
	} __CommandLabelContent;

	//weche parsdaten sind für kommandostruct vorhanden?
    typedef struct __ParseCommand_st__
	{
        //components
    }ParseCommand_st;  

	typedef vector&lt;ParseCommand_st&gt; _vec_ParseCommand;

public:
	ParseCommand_st st_ParseCommand;
	__CommandLabelContent st_CommandLabelContent;
	_vec_ParseCommand vec_ParseCommand;	

	multimap&lt;__CommandLabelContent,_vec_ParseCommand&gt; mmap_CommandLabel;[/code]
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1717024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717024</guid><dc:creator><![CDATA[Theresa]]></dc:creator><pubDate>Thu, 28 May 2009 06:54:48 GMT</pubDate></item><item><title><![CDATA[Reply to std::map on Thu, 28 May 2009 07:21:36 GMT]]></title><description><![CDATA[<p>Also ich denke, dass das mit dem vector gar nichts zu tun hat, sondern Dein &quot;Key&quot;-Typ ist nicht vergleichbar (wie schon theta angedeutet)</p>
<p>Eine map legt sortiert ab und muss dazu bei 2 Keys feststellen können, welcher kleiner ist (bzw. ob sie beide gleich sind). Bei einem selbstgebauten Typen musst Du das selbst ausdenken und implementieren (z.B. über einen operator&lt;()).<br />
Wenn Dein Typ nicht &quot;sortierbar&quot; ist, hilft Dir auch eine multimap nicht weiter.<br />
Kann es sein, dass Du einfach nur die Teile &quot;irgendwie zusammenpacken&quot; und von der schnelleren Suche der map profitieren möchtest?<br />
Dann musst Du aber etwas dafür tun, denn die map kann nicht zaubern, sondern lediglich Eigenschaften des Keytyps geschickt ausnutzen ... Eigenschaften, die Du aber implementieren musst.<br />
Wenn Du beschreibst, woraus Dein Keytyp (CommandLabelContent) besteht, können wir Dir auch beim Schreiben eines Vergleichsoperators helfen. Wenn es sich um eine Sammlung voneinander unabhängiger Attribute handelt, kann man sie natürlich einfach hintereinanderhängen .... aber damit bezahlt man (bei größeren Strukturen) den Performancevorteil, den map mitbringt mit einem relativ &quot;teuren&quot; Vergleichsoperator - kann im Endeffekt nach hinten losgehen.</p>
<p>Übrigens: Ich persönlich finde verschiedene Deiner Stilentscheidungen (&quot;exzessive-Unterstriche-Stil&quot;, &quot;C-typedef-struct&quot;-Stil, &quot;Ungarische-Notation-Rudimente&quot;-Stil, ...)- nicht nur total überflüssig, sondern auch schrecklich zu lesen. <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="😉"
    /><br />
Das hier tut's doch genauso (und ist leserlicher):</p>
<pre><code class="language-cpp">struct CommandLabelContent {
              //components
    };
    struct ParseCommand    {
        //components
    };

    typedef vector&lt;ParseCommand&gt; ParseCommandContainer;
public:
    ParseCommand sonderParseCommand; // wieso braucht's noch einen separaten ParseCommand, wenn es unten schon einen ganzen vector voll davon gibt? 
    // wenn er eine besondere Rolle einnimmt, sollte sich das in seinem Namen widerspiegeln
    CommandLabelContent commandLabelContent; // ebenso hier ....

    ParseCommandContainer parseCommandContainer;
    multimap&lt;CommandLabelContent, ParseCommandContainer&gt; CommandLabelContainer;
</code></pre>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717030</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 28 May 2009 07:21:36 GMT</pubDate></item><item><title><![CDATA[Reply to std::map on Thu, 28 May 2009 07:15:33 GMT]]></title><description><![CDATA[<p>gut...<br />
bleibt nur die frage, wie ich den &lt; operator implementiere.<br />
Gruss<br />
T.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717032</guid><dc:creator><![CDATA[Theresa]]></dc:creator><pubDate>Thu, 28 May 2009 07:15:33 GMT</pubDate></item><item><title><![CDATA[Reply to std::map on Thu, 28 May 2009 07:40:34 GMT]]></title><description><![CDATA[<p>Theresa schrieb:</p>
<blockquote>
<p>gut...<br />
bleibt nur die frage, wie ich den &lt; operator implementiere.<br />
Gruss<br />
T.</p>
</blockquote>
<p>Da hat sich Deine Antwort mit meiner letzten Ergänzung überschnitten:</p>
<p>Simon2 schrieb:</p>
<blockquote>
<p>...<br />
Wenn Du beschreibst, woraus Dein Keytyp (CommandLabelContent) besteht, können wir Dir auch beim Schreiben eines Vergleichsoperators helfen. Wenn es sich um eine Sammlung voneinander unabhängiger Attribute handelt, kann man sie natürlich einfach hintereinanderhängen .... aber damit bezahlt man (bei größeren Strukturen) den Performancevorteil, den map mitbringt mit einem relativ &quot;teuren&quot; Vergleichsoperator - kann im Endeffekt nach hinten losgehen.<br />
...</p>
</blockquote>
<p>Am Einfachsten ist es, wenn Dein CommandLabelContent bereits sowas wie eine &quot;ID&quot; hat, die fachlich eindeutig ist. Z.B. sowas wie:</p>
<pre><code class="language-cpp">struct CommmandLabelContent {
   string name;
...
};

bool operator&lt;(CommmandLabelContent const&amp; c1, CommmandLabelContent const&amp; c2) {
   return c1.name &lt; c2.name;
}
</code></pre>
<p>Also kein Hexenwerk.</p>
<p>Komplizierter ist es, wenn es keine derartige &quot;ID&quot; gibt, aber in den allermeisten Fällen kann man dan was basteln..</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717038</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 28 May 2009 07:40:34 GMT</pubDate></item><item><title><![CDATA[Reply to std::map on Thu, 28 May 2009 08:16:14 GMT]]></title><description><![CDATA[<p>Vielen Dank für die Hilfe und die Ratschläge.<br />
Werds gerne umsetzen.</p>
<p>Grüsse<br />
Theresa</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717063</guid><dc:creator><![CDATA[Theresa]]></dc:creator><pubDate>Thu, 28 May 2009 08:16:14 GMT</pubDate></item><item><title><![CDATA[Reply to std::map on Thu, 28 May 2009 08:17:51 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Übrigens: Ich persönlich finde verschiedene Deiner Stilentscheidungen (&quot;exzessive-Unterstriche-Stil&quot;, &quot;C-typedef-struct&quot;-Stil, &quot;Ungarische-Notation-Rudimente&quot;-Stil, ...)- nicht nur total überflüssig, sondern auch schrecklich zu lesen. <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>
</blockquote>
<p>Gerade Teile des &quot;exzessive-Unterstriche&quot;-Stils sind sogar verboten - doppelte Unterstruíche sind für den Compiler/Die Implementation reserviert, ebenso führende Unterstriche gefolgt von Großbuchstaben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1717064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717064</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 28 May 2009 08:17:51 GMT</pubDate></item><item><title><![CDATA[Reply to std::map on Thu, 28 May 2009 08:46:33 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Übrigens: Ich persönlich finde verschiedene Deiner Stilentscheidungen (&quot;exzessive-Unterstriche-Stil&quot;, &quot;C-typedef-struct&quot;-Stil, &quot;Ungarische-Notation-Rudimente&quot;-Stil, ...)- nicht nur total überflüssig, sondern auch schrecklich zu lesen. <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>
</blockquote>
<p>Was anstrengend zu schreiben war, soll gefälligst auch anstrengend zu lesen sein. <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/1717088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1717088</guid><dc:creator><![CDATA[Registrierter Troll]]></dc:creator><pubDate>Thu, 28 May 2009 08:46:33 GMT</pubDate></item></channel></rss>