<?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[map value an Funktion übergeben!]]></title><description><![CDATA[<p>Zuerst einmal hallo an Alle! <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>Ich möchte mit Hilfe des mappings einen CommandPrompt schreiben, welcher verschiedene Befehle executieren kann.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;map&gt;

int main()
{
  std::string input;
  std::map &lt;std::string, int&gt; mymap;
  std::map&lt;std::string, int&gt;::iterator it;
  mymap[&quot;list&quot;] = 1;
  mymap[&quot;save&quot;] = 2;
  mymap[&quot;quit&quot;] = 3;

  std::cout &lt;&lt;&quot;Befehl? &quot;; 
  getline(std::cin, input);

  for (it = mymap.begin(); it != mymap.end(); it++)
  {
    if(it-&gt;first == input)
    {
      return it-&gt; second;
    }

    else
    {
      std::cout&lt;&lt;&quot;Command not found&quot;&lt;&lt;std::endl;
    }

  }
}
</code></pre>
<p>Soweit so gut (das funktioniert auch ^^), aber nun möchte ich, wenn ein passender Eintrag im Container gefunden wurde, den integer Wert einer Funktion execute() übergeben welche dann mit Hilfe eines Switch/Case Statements dann die entsprechenden weiteren Funktionen aufruft!<br />
Dies will mir einfach nicht gelingen!<br />
Wenn ich den it-&gt;second Wert einer anderen Variable zuweiße, also</p>
<pre><code class="language-cpp">int key = it-&gt;second;
</code></pre>
<p>und diesen dann übergebe kommt ein Seg Fault!</p>
<p>als ich probiert habe, den it Wert mit Referenz zu übergeben, also</p>
<pre><code class="language-cpp">execute(it&amp;-&gt;second)
</code></pre>
<p>funktioniert es auch nicht!</p>
<p>Bitte um Hilfe! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Vielen Dank schon im Vorhinein</p>
<p>trunksen</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284624/map-value-an-funktion-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 23:16:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284624.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 05 Apr 2011 09:27:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to map value an Funktion übergeben! on Tue, 05 Apr 2011 09:27:16 GMT]]></title><description><![CDATA[<p>Zuerst einmal hallo an Alle! <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>Ich möchte mit Hilfe des mappings einen CommandPrompt schreiben, welcher verschiedene Befehle executieren kann.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;map&gt;

int main()
{
  std::string input;
  std::map &lt;std::string, int&gt; mymap;
  std::map&lt;std::string, int&gt;::iterator it;
  mymap[&quot;list&quot;] = 1;
  mymap[&quot;save&quot;] = 2;
  mymap[&quot;quit&quot;] = 3;

  std::cout &lt;&lt;&quot;Befehl? &quot;; 
  getline(std::cin, input);

  for (it = mymap.begin(); it != mymap.end(); it++)
  {
    if(it-&gt;first == input)
    {
      return it-&gt; second;
    }

    else
    {
      std::cout&lt;&lt;&quot;Command not found&quot;&lt;&lt;std::endl;
    }

  }
}
</code></pre>
<p>Soweit so gut (das funktioniert auch ^^), aber nun möchte ich, wenn ein passender Eintrag im Container gefunden wurde, den integer Wert einer Funktion execute() übergeben welche dann mit Hilfe eines Switch/Case Statements dann die entsprechenden weiteren Funktionen aufruft!<br />
Dies will mir einfach nicht gelingen!<br />
Wenn ich den it-&gt;second Wert einer anderen Variable zuweiße, also</p>
<pre><code class="language-cpp">int key = it-&gt;second;
</code></pre>
<p>und diesen dann übergebe kommt ein Seg Fault!</p>
<p>als ich probiert habe, den it Wert mit Referenz zu übergeben, also</p>
<pre><code class="language-cpp">execute(it&amp;-&gt;second)
</code></pre>
<p>funktioniert es auch nicht!</p>
<p>Bitte um Hilfe! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Vielen Dank schon im Vorhinein</p>
<p>trunksen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2044824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2044824</guid><dc:creator><![CDATA[trunksen]]></dc:creator><pubDate>Tue, 05 Apr 2011 09:27:16 GMT</pubDate></item><item><title><![CDATA[Reply to map value an Funktion übergeben! on Tue, 05 Apr 2011 10:03:55 GMT]]></title><description><![CDATA[<p>1. Das ist doch wohl nicht dein Ernst, dass du die Map von Hand durchiterierst und alle Einträge vergleichst. Die map ist doch gerade dafür da, dass du das nicht tun musst und stattdessen einfach <code>mymap[input]</code> schreiben kannst (vorher aber eventuell prüfen, ob der Eintrag auch existiert, sonst wird ein neuer angelegt).<br />
2. Wenn du einen Segfault bekommst, dann wird das entsprechende Element wohl nicht existieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2044842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2044842</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 05 Apr 2011 10:03:55 GMT</pubDate></item><item><title><![CDATA[Reply to map value an Funktion übergeben! on Tue, 05 Apr 2011 11:28:05 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Vielen Dank für die schnelle Antwort (aber warum der forsche Ton?)!</p>
<blockquote>
<p>Das ist doch wohl nicht dein Ernst, dass du die Map von Hand durchiterierst und alle Einträge vergleichst. Die map ist doch gerade dafür da, dass du das nicht tun musst und stattdessen einfach mymap[input] schreiben kannst (vorher aber eventuell prüfen, ob der Eintrag auch existiert, sonst wird ein neuer angelegt).</p>
</blockquote>
<p>Das habe ich nicht gewusst, die Beispiele die ich gesehen habe waren meistens mit einer Schleife!</p>
<p>Meine neue Schleife</p>
<pre><code class="language-cpp">if(mymap[input])
  {
    int key = mymap[input];
    execute(key);
  }
</code></pre>
<p>und</p>
<pre><code class="language-cpp">void execute(int&amp; key)
{

  std::cout&lt;&lt;key&lt;&lt;std::endl;
}
</code></pre>
<p>Funktioniert wunderbar!</p>
<p>Vielen Dank für den Tipp <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>mfg trunksen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2044903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2044903</guid><dc:creator><![CDATA[trunksen]]></dc:creator><pubDate>Tue, 05 Apr 2011 11:28:05 GMT</pubDate></item><item><title><![CDATA[Reply to map value an Funktion übergeben! on Tue, 05 Apr 2011 11:38:50 GMT]]></title><description><![CDATA[<p>trunksen schrieb:</p>
<blockquote>
<pre><code class="language-cpp">if(mymap[input])
  {
    int key = mymap[input];
    execute(key);
  }
</code></pre>
</blockquote>
<p>Ich bezweifle, dass du dir im klaren bist, was das <code>if (mymap[input])</code> tut. Das funktioniert hier zufällig, hat aber ungewollte Nebeneffekte. Du solltest das mit <code>find</code> umschreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2044914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2044914</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Tue, 05 Apr 2011 11:38:50 GMT</pubDate></item><item><title><![CDATA[Reply to map value an Funktion übergeben! on Tue, 05 Apr 2011 18:22:56 GMT]]></title><description><![CDATA[<p><a href="http://codepad.org/VaZoPaZB" rel="nofollow">http://codepad.org/VaZoPaZB</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045119</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Tue, 05 Apr 2011 18:22:56 GMT</pubDate></item><item><title><![CDATA[Reply to map value an Funktion übergeben! on Tue, 05 Apr 2011 19:22:46 GMT]]></title><description><![CDATA[<p>Danke, genau so meinte ich es <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/2045151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045151</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Tue, 05 Apr 2011 19:22:46 GMT</pubDate></item></channel></rss>