<?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&amp;lt;char[3], unsigned long&amp;gt; --&amp;gt; Angabe einer expliziten Initialisierung für Felder nicht moeglich]]></title><description><![CDATA[<p>Hallo, ich möchte folgende Map bauen:</p>
<pre><code class="language-cpp">typedef std::map&lt;char[3], unsigned long&gt; CounterMap;
</code></pre>
<p>Als Fehlermeldung bekomme ich dann dieses</p>
<pre><code>c:\...\utility(21) : error C2536: 'std::pair&lt;char const  [3],unsigned long&gt;::first' : Angabe einer expliziten Initialisierung fuer Felder nicht moeglich
c:\...\utility(25) : Siehe Deklaration von 'first'
c:\...\utility(21) : Bei der Kompilierung der Member-Funktion
 '__thiscall std::pair&lt;char const  [3], unsigned long&gt;::std::pair&lt;char const [3],unsigned long&gt;(const char (&amp;)[3],const unsigned long &amp;)'
 der Klassenvorlage
</code></pre>
<p>Klar könnte ich das auch mit einem std::string lösen, aber ich brauche nur Platz für genau zwei Buchstaben (+'\0').</p>
<p>Was fehlt meinem Compiler zu seinem (und meinem) Glück noch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/119288/std-map-lt-char-3-unsigned-long-gt-gt-angabe-einer-expliziten-initialisierung-für-felder-nicht-moeglich</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 22:06:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/119288.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 30 Aug 2005 13:38:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::map&amp;lt;char[3], unsigned long&amp;gt; --&amp;gt; Angabe einer expliziten Initialisierung für Felder nicht moeglich on Tue, 30 Aug 2005 13:38:06 GMT]]></title><description><![CDATA[<p>Hallo, ich möchte folgende Map bauen:</p>
<pre><code class="language-cpp">typedef std::map&lt;char[3], unsigned long&gt; CounterMap;
</code></pre>
<p>Als Fehlermeldung bekomme ich dann dieses</p>
<pre><code>c:\...\utility(21) : error C2536: 'std::pair&lt;char const  [3],unsigned long&gt;::first' : Angabe einer expliziten Initialisierung fuer Felder nicht moeglich
c:\...\utility(25) : Siehe Deklaration von 'first'
c:\...\utility(21) : Bei der Kompilierung der Member-Funktion
 '__thiscall std::pair&lt;char const  [3], unsigned long&gt;::std::pair&lt;char const [3],unsigned long&gt;(const char (&amp;)[3],const unsigned long &amp;)'
 der Klassenvorlage
</code></pre>
<p>Klar könnte ich das auch mit einem std::string lösen, aber ich brauche nur Platz für genau zwei Buchstaben (+'\0').</p>
<p>Was fehlt meinem Compiler zu seinem (und meinem) Glück noch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/861428</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861428</guid><dc:creator><![CDATA[hehejo]]></dc:creator><pubDate>Tue, 30 Aug 2005 13:38:06 GMT</pubDate></item><item><title><![CDATA[Reply to std::map&amp;lt;char[3], unsigned long&amp;gt; --&amp;gt; Angabe einer expliziten Initialisierung für Felder nicht moeglich on Tue, 30 Aug 2005 13:44:22 GMT]]></title><description><![CDATA[<p>char*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/861436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861436</guid><dc:creator><![CDATA[*********]]></dc:creator><pubDate>Tue, 30 Aug 2005 13:44:22 GMT</pubDate></item><item><title><![CDATA[Reply to std::map&amp;lt;char[3], unsigned long&amp;gt; --&amp;gt; Angabe einer expliziten Initialisierung für Felder nicht moeglich on Tue, 30 Aug 2005 13:46:37 GMT]]></title><description><![CDATA[<p>char* wollte ich ja gerade vermeinden.<br />
Dann müsste ich mir ja alle Texte wieder mit new anlegen und mich selbst drum kümmern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/861438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861438</guid><dc:creator><![CDATA[hehejo]]></dc:creator><pubDate>Tue, 30 Aug 2005 13:46:37 GMT</pubDate></item><item><title><![CDATA[Reply to std::map&amp;lt;char[3], unsigned long&amp;gt; --&amp;gt; Angabe einer expliziten Initialisierung für Felder nicht moeglich on Tue, 30 Aug 2005 13:47:58 GMT]]></title><description><![CDATA[<p>es geht nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/861439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861439</guid><dc:creator><![CDATA[std::]]></dc:creator><pubDate>Tue, 30 Aug 2005 13:47:58 GMT</pubDate></item><item><title><![CDATA[Reply to std::map&amp;lt;char[3], unsigned long&amp;gt; --&amp;gt; Angabe einer expliziten Initialisierung für Felder nicht moeglich on Tue, 30 Aug 2005 13:49:28 GMT]]></title><description><![CDATA[<p>Nun gut, dann mache ich es mit std::string.</p>
<p>Danke für die schnellen Antworten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/861441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861441</guid><dc:creator><![CDATA[hehejo]]></dc:creator><pubDate>Tue, 30 Aug 2005 13:49:28 GMT</pubDate></item><item><title><![CDATA[Reply to std::map&amp;lt;char[3], unsigned long&amp;gt; --&amp;gt; Angabe einer expliziten Initialisierung für Felder nicht moeglich on Tue, 30 Aug 2005 14:08:26 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">typedef std::map&lt;boost::array&lt;char, 3&gt;, unsigned long&gt; CounterMap;

CounterMap map;
boost::array&lt;char, 3&gt; array = { 'a', 'b', 'c' };
map.insert(std::make_pair(array, 123));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/861460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861460</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Tue, 30 Aug 2005 14:08:26 GMT</pubDate></item><item><title><![CDATA[Reply to std::map&amp;lt;char[3], unsigned long&amp;gt; --&amp;gt; Angabe einer expliziten Initialisierung für Felder nicht moeglich on Tue, 30 Aug 2005 14:21:47 GMT]]></title><description><![CDATA[<p>Es ginge schon.</p>
<pre><code class="language-cpp">struct mychar{char a,b,c;
char operator[](unsigned int index)
{
  if(index &lt; 1) return a;
  if(index &gt;1 &amp;&amp; index &lt; 3)return c;
  if(index == 1)return b;
  throw std::exception(&quot;OUT OF BOUNDS&quot;);
}
};
// oder
struct mychar{int a;
char operator[](unsigned int index)
{
  if(index &lt; 3)
    return ((char*)&amp;a))[index];
  throw std::exception(&quot;OUT OF BOUNDS&quot;);
}
};

std::map&lt;mychar,std::string&gt; mymap;
</code></pre>
<p>Ich würde aber Boost::array vorziehen <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/861465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861465</guid><dc:creator><![CDATA[phlox81]]></dc:creator><pubDate>Tue, 30 Aug 2005 14:21:47 GMT</pubDate></item><item><title><![CDATA[Reply to std::map&amp;lt;char[3], unsigned long&amp;gt; --&amp;gt; Angabe einer expliziten Initialisierung für Felder nicht moeglich on Tue, 30 Aug 2005 14:17:12 GMT]]></title><description><![CDATA[<p>phlox81 schrieb:</p>
<blockquote>
<p>Es ginge schon.</p>
<pre><code class="language-cpp">struct mychar{char a,b,c;
char operator[](unsigned int index)
{
  if(index &lt; 1) return a;
  if(index &gt;1 &amp;&amp; index &lt; 3)return c;
  if(index == 1)return b;
  throw std::exception(&quot;OUT OF BOUNDS&quot;);
}
};
// oder
struct mychar{int a;
char operator[](unsigned int index)
{
  if(index &lt; 3)
    return ((char*)&amp;a))[index];
  throw std::exception(&quot;OUT OF BOUNDS&quot;);
}
};

std::map&lt;mychar,std::string&gt; mymap;
</code></pre>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/861470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861470</guid><dc:creator><![CDATA[...]]></dc:creator><pubDate>Tue, 30 Aug 2005 14:17:12 GMT</pubDate></item><item><title><![CDATA[Reply to std::map&amp;lt;char[3], unsigned long&amp;gt; --&amp;gt; Angabe einer expliziten Initialisierung für Felder nicht moeglich on Tue, 30 Aug 2005 14:38:04 GMT]]></title><description><![CDATA[<p>FireFlow schrieb:</p>
<blockquote>
<pre><code class="language-cpp">typedef std::map&lt;boost::array&lt;char, 3&gt;, unsigned long&gt; CounterMap;

CounterMap map;
boost::array&lt;char, 3&gt; array = { 'a', 'b', 'c' };
map.insert(std::make_pair(array, 123));
</code></pre>
</blockquote>
<p>Dazu noch eine kleine Frage:<br />
Ist es sinnvoller<br />
map[&quot;abc&quot;] = 123;<br />
oder<br />
map.insert(std::make_pair(&quot;abc&quot;, 123));<br />
zu schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/861486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861486</guid><dc:creator><![CDATA[hehejo]]></dc:creator><pubDate>Tue, 30 Aug 2005 14:38:04 GMT</pubDate></item><item><title><![CDATA[Reply to std::map&amp;lt;char[3], unsigned long&amp;gt; --&amp;gt; Angabe einer expliziten Initialisierung für Felder nicht moeglich on Tue, 30 Aug 2005 15:13:12 GMT]]></title><description><![CDATA[<p>Insert fügt nur ein Element ein wenn es noch keines mit dem Key gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/861515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861515</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Tue, 30 Aug 2005 15:13:12 GMT</pubDate></item><item><title><![CDATA[Reply to std::map&amp;lt;char[3], unsigned long&amp;gt; --&amp;gt; Angabe einer expliziten Initialisierung für Felder nicht moeglich on Wed, 31 Aug 2005 07:31:21 GMT]]></title><description><![CDATA[<p>Das weiß ich.<br />
Ist insert besser, wenn ich weiß, dass noch keines mit diesem Key drin ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/861812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861812</guid><dc:creator><![CDATA[hehejo]]></dc:creator><pubDate>Wed, 31 Aug 2005 07:31:21 GMT</pubDate></item><item><title><![CDATA[Reply to std::map&amp;lt;char[3], unsigned long&amp;gt; --&amp;gt; Angabe einer expliziten Initialisierung für Felder nicht moeglich on Wed, 31 Aug 2005 09:42:15 GMT]]></title><description><![CDATA[<p>Prüfen ob es den Key bereits gibt werden wohl insert und op[]. Insert muss es ja wissen um einzufügen und op[] um zu wissen ob er überschreiben muss oder nen neues Element einfügen muss.<br />
Ich verwende op[], da er mir syntaktisch besser gefällt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/861891</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861891</guid><dc:creator><![CDATA[User---]]></dc:creator><pubDate>Wed, 31 Aug 2005 09:42:15 GMT</pubDate></item><item><title><![CDATA[Reply to std::map&amp;lt;char[3], unsigned long&amp;gt; --&amp;gt; Angabe einer expliziten Initialisierung für Felder nicht moeglich on Wed, 31 Aug 2005 09:49:34 GMT]]></title><description><![CDATA[<p>op[] hat den Nachteil das er einen Default-Konstruktor voraussetzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/861896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/861896</guid><dc:creator><![CDATA[hinweis]]></dc:creator><pubDate>Wed, 31 Aug 2005 09:49:34 GMT</pubDate></item></channel></rss>