<?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[vector in map einfügen]]></title><description><![CDATA[<p>Hallo,</p>
<p>folgender Code bereitet mir Kopfschmerzen:</p>
<pre><code class="language-cpp">typedef std::map&lt;uint32_t, std::vector&lt;const char*&gt;&gt; hash_map;
hash_map hash_to_string;
//...
std::vector&lt;const char*&gt; new_vector;
new_vector.push_back(c_string);
hash_to_string.insert(hash, new_vector);
</code></pre>
<p>Das mag mein Compiler leider gar nicht. Er wirft mir nur seitenlange, nicht verständliche STL-Fehler.</p>
<p>Wie füge ich einen neuen Vektor in die Map ein?<br />
Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/322503/vector-in-map-einfügen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 21:37:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322503.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Dec 2013 09:40:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to vector in map einfügen on Tue, 24 Dec 2013 09:40:28 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>folgender Code bereitet mir Kopfschmerzen:</p>
<pre><code class="language-cpp">typedef std::map&lt;uint32_t, std::vector&lt;const char*&gt;&gt; hash_map;
hash_map hash_to_string;
//...
std::vector&lt;const char*&gt; new_vector;
new_vector.push_back(c_string);
hash_to_string.insert(hash, new_vector);
</code></pre>
<p>Das mag mein Compiler leider gar nicht. Er wirft mir nur seitenlange, nicht verständliche STL-Fehler.</p>
<p>Wie füge ich einen neuen Vektor in die Map ein?<br />
Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373491</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373491</guid><dc:creator><![CDATA[uxji]]></dc:creator><pubDate>Tue, 24 Dec 2013 09:40:28 GMT</pubDate></item><item><title><![CDATA[Reply to vector in map einfügen on Tue, 24 Dec 2013 09:41:50 GMT]]></title><description><![CDATA[<p>insert erwartet nunmal das passende std::pair ... mit emplace hättest Du vielleicht mehr Glück.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373492</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Tue, 24 Dec 2013 09:41:50 GMT</pubDate></item><item><title><![CDATA[Reply to vector in map einfügen on Tue, 24 Dec 2013 09:43:11 GMT]]></title><description><![CDATA[<p>Es gibt jetzt aber auch unordered_map usw., falls Du die Möglichkeit dazu hast. Damit bekommst Du eine echte hash map.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373493</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Tue, 24 Dec 2013 09:43:11 GMT</pubDate></item><item><title><![CDATA[Reply to vector in map einfügen on Tue, 24 Dec 2013 09:50:44 GMT]]></title><description><![CDATA[<p>Das ging ja schnell. unordered_map ist genau das, was ich gesucht habe. Super.</p>
<p>Mit emplace funktioniert es. Ich übergebe ja eine Kopie des Vektors. Kann man das irgendwie effizienter machen oder ist das so legitim?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373495</guid><dc:creator><![CDATA[uxji]]></dc:creator><pubDate>Tue, 24 Dec 2013 09:50:44 GMT</pubDate></item><item><title><![CDATA[Reply to vector in map einfügen on Tue, 24 Dec 2013 09:52:17 GMT]]></title><description><![CDATA[<p>Du könntest aus dem vector per std::move noch eine rvalue referenz machen, dann wird das dazugehörige heap-array nicht kopiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373496</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Tue, 24 Dec 2013 09:52:17 GMT</pubDate></item><item><title><![CDATA[Reply to vector in map einfügen on Tue, 24 Dec 2013 10:10:12 GMT]]></title><description><![CDATA[<p>Ein const char* in einem Vector hat den Absturz schon fast eingebaut. Warum benutzt du nicht std::string?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373498</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Tue, 24 Dec 2013 10:10:12 GMT</pubDate></item><item><title><![CDATA[Reply to vector in map einfügen on Tue, 24 Dec 2013 10:13:53 GMT]]></title><description><![CDATA[<p>Er nennt die Variable c_string, ich ging jetzt davon aus, dass er da String-Literale drin verwaltet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373499</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373499</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Tue, 24 Dec 2013 10:13:53 GMT</pubDate></item><item><title><![CDATA[Reply to vector in map einfügen on Tue, 24 Dec 2013 11:10:27 GMT]]></title><description><![CDATA[<p>decimad schrieb:</p>
<blockquote>
<p>Du könntest aus dem vector per std::move noch eine rvalue referenz machen, dann wird das dazugehörige heap-array nicht kopiert.</p>
</blockquote>
<p>Das versuche ich gleich direkt mal.</p>
<p>manni66 schrieb:</p>
<blockquote>
<p>Ein const char* in einem Vector hat den Absturz schon fast eingebaut. Warum benutzt du nicht std::string?</p>
</blockquote>
<p>Warum?</p>
<p>Ich bekomme Strings als const char* und möchte mir die Konvertierung zu std::string sparen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373505</guid><dc:creator><![CDATA[uxji]]></dc:creator><pubDate>Tue, 24 Dec 2013 11:10:27 GMT</pubDate></item><item><title><![CDATA[Reply to vector in map einfügen on Tue, 24 Dec 2013 11:50:06 GMT]]></title><description><![CDATA[<p>Mit const char* zu hantieren ist fehleranfälliger als mit std::string - hängt von den Besitzverhältnissen ab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373511</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Tue, 24 Dec 2013 11:50:06 GMT</pubDate></item><item><title><![CDATA[Reply to vector in map einfügen on Tue, 24 Dec 2013 12:07:27 GMT]]></title><description><![CDATA[<p>uxji schrieb:</p>
<blockquote>
<p>Ich bekomme Strings als const char* und möchte mir die Konvertierung zu std::string sparen.</p>
</blockquote>
<p>Kannst du garantieren, dass die C-Strings solange gültig bleiben, wie du sie benutzt? D.h. irgendwo bleibt Speicher für sie allokiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373513</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 24 Dec 2013 12:07:27 GMT</pubDate></item><item><title><![CDATA[Reply to vector in map einfügen on Tue, 24 Dec 2013 13:05:18 GMT]]></title><description><![CDATA[<p>uxji schrieb:</p>
<blockquote>
<p>manni66 schrieb:</p>
<blockquote>
<p>Ein const char* in einem Vector hat den Absturz schon fast eingebaut. Warum benutzt du nicht std::string?</p>
</blockquote>
<p>Warum?</p>
<p>Ich bekomme Strings als const char* und möchte mir die Konvertierung zu std::string sparen.</p>
</blockquote>
<p>Eben, du verwendest Zeiger, die wahrscheinlich ungültig sind, wenn du sie benutzt. Wie ich schon sagte: der Absturz ist schon eingebaut!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373520</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Tue, 24 Dec 2013 13:05:18 GMT</pubDate></item><item><title><![CDATA[Reply to vector in map einfügen on Tue, 24 Dec 2013 13:07:10 GMT]]></title><description><![CDATA[<p>und die Ungültigkeit der Zeiger bekomme ich nur in den Griff, wenn ich n String drausmache?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373521</guid><dc:creator><![CDATA[uxji]]></dc:creator><pubDate>Tue, 24 Dec 2013 13:07:10 GMT</pubDate></item><item><title><![CDATA[Reply to vector in map einfügen on Tue, 24 Dec 2013 13:23:56 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>uxji schrieb:</p>
<blockquote>
<p>manni66 schrieb:</p>
<blockquote>
<p>Ein const char* in einem Vector hat den Absturz schon fast eingebaut. Warum benutzt du nicht std::string?</p>
</blockquote>
<p>Warum?</p>
<p>Ich bekomme Strings als const char* und möchte mir die Konvertierung zu std::string sparen.</p>
</blockquote>
<p>Eben, du verwendest Zeiger, die wahrscheinlich ungültig sind, wenn du sie benutzt. Wie ich schon sagte: der Absturz ist schon eingebaut!</p>
</blockquote>
<p>Woher willst du wissen, dass die Zeiger ungültig sind?<br />
Wenn es da irgendeine Funktion gibt, die Zeiger zurückgibt, die garantiert gültig sind und bleiben, kann man sich die Kopie sparen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373527</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Tue, 24 Dec 2013 13:23:56 GMT</pubDate></item><item><title><![CDATA[Reply to vector in map einfügen on Tue, 24 Dec 2013 14:02:42 GMT]]></title><description><![CDATA[<p>uxji schrieb:</p>
<blockquote>
<p>und die Ungültigkeit der Zeiger bekomme ich nur in den Griff, wenn ich n String drausmache?</p>
</blockquote>
<p>Indem du dir über die Besitzverhältnisse im Klaren bist. Entweder du garantierst die Gültigkeit der Zeiger (was impliziert, dass die C-Strings irgendwo gespeichert sind und es auch bleiben) oder du nimmst <code>std::string</code> , welcher selbst für sich schaut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373536</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 24 Dec 2013 14:02:42 GMT</pubDate></item><item><title><![CDATA[Reply to vector in map einfügen on Tue, 24 Dec 2013 14:41:22 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Woher willst du wissen, dass die Zeiger ungültig sind?<br />
Wenn es da irgendeine Funktion gibt, die Zeiger zurückgibt, die garantiert gültig sind und bleiben, kann man sich die Kopie sparen.</p>
</blockquote>
<p>Ja, wenn. Und wenn es jetzt so ist, ist es morgen anders. Garantiert!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373544</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Tue, 24 Dec 2013 14:41:22 GMT</pubDate></item><item><title><![CDATA[Reply to vector in map einfügen on Tue, 24 Dec 2013 14:58:28 GMT]]></title><description><![CDATA[<p>Nach kurzer Zeit (und vor allemw enn man nicht allein an dem Projekt arbeitet) und wenigen Änderungen da weiss keienr mehr, wem welcher Zeiger und welche Daten gehören.</p>
<p>Und wer löscht den Speicher auf den die Zeiger zeigen?</p>
<p>Aktuelles Beispiel:<br />
Ich protiere grad etwas C Code nach C++: Der Kollege, der den C Code geschrieben hat, der hat in eienr Funktion am Anfang en char Array allokiert (~16000 Bytes) und beschreibt das munter immer wieder neu hin und her. Was am Anfang ein Dateiname war, stellt nun einen Pfad oder den Inhalt einer Datei dar. Alles sehr konfus.</p>
<p>Mit Strings erstellst du dir erstmal einfahc immer ne neue Instanz, die genau für eine Aufgabe vorgesehen ist.</p>
<p>Optimieren kann man später noch. (In dem Fall unnötig, da es eine Init Funktion ist, die einmal beim Initialisieren einer Globalen Variable aufgerufen wird. [Die Globals stammen nicht von mir ;)])</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373547</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Tue, 24 Dec 2013 14:58:28 GMT</pubDate></item></channel></rss>