<?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[Array und Hashes in C++]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich lerne an der Uni Ruby und bringe mir zu Hause C++ mit einem 900-Seiten-Wälzer gerade bei...</p>
<p>Hab' mir dort jetzt das Kapitel &quot;Arrays&quot; durchgelesen und, wenn ich das richtig verstanden habe, kann man in die Arrays nur andere Arrays oder Daten EINES bestimmten Types stecken... ist das richtig???<br />
Und ich muss vorher festlegen, wie groß der Array ist???<br />
Das würde doch die Flexibilität eines Arrays total einschränken... <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>int Zahlen[10];</p>
<p>Wie kann ich denn zB folgenden Array in C++ schreiben?:<br />
array=[2, &quot;Haus&quot;, [2.2, &quot;c&quot;&rsqb;&rsqb;</p>
<p>Und andere Frage:<br />
In meinem Buch hab' ich gar kein Kapitel über Hashes gefunden...<br />
es gibt doch wohl Hashes in C++, oder?</p>
<p>Danke für alle Antworten...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/244167/array-und-hashes-in-c</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 13:26:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/244167.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 26 Jun 2009 08:06:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array und Hashes in C++ on Fri, 26 Jun 2009 08:06:44 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich lerne an der Uni Ruby und bringe mir zu Hause C++ mit einem 900-Seiten-Wälzer gerade bei...</p>
<p>Hab' mir dort jetzt das Kapitel &quot;Arrays&quot; durchgelesen und, wenn ich das richtig verstanden habe, kann man in die Arrays nur andere Arrays oder Daten EINES bestimmten Types stecken... ist das richtig???<br />
Und ich muss vorher festlegen, wie groß der Array ist???<br />
Das würde doch die Flexibilität eines Arrays total einschränken... <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>int Zahlen[10];</p>
<p>Wie kann ich denn zB folgenden Array in C++ schreiben?:<br />
array=[2, &quot;Haus&quot;, [2.2, &quot;c&quot;&rsqb;&rsqb;</p>
<p>Und andere Frage:<br />
In meinem Buch hab' ich gar kein Kapitel über Hashes gefunden...<br />
es gibt doch wohl Hashes in C++, oder?</p>
<p>Danke für alle Antworten...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733115</guid><dc:creator><![CDATA[Barcelona]]></dc:creator><pubDate>Fri, 26 Jun 2009 08:06:44 GMT</pubDate></item><item><title><![CDATA[Reply to Array und Hashes in C++ on Fri, 26 Jun 2009 08:37:30 GMT]]></title><description><![CDATA[<p>Zu deinen Fragen.<br />
1. Wenn du flexible Arrays willst nimm std::vector statt statischer Arrays (siehe Magazin).<br />
2. Du kannst nicht so einfach verschiedene Typen in ein Array stecken. Ehlich gesagt sehe ich auch keinen Sinn darin.<br />
Wenn du sowas wirklich einmal brauchst bieten sich Typen wie boost::any oder boost::variant an.<br />
3. Zum Erzeugen von Hashes gibt es nichts im C++Standard, aber dafür gibt es ja diverse Bibliotheken die das anbieten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733145</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 26 Jun 2009 08:37:30 GMT</pubDate></item><item><title><![CDATA[Reply to Array und Hashes in C++ on Fri, 26 Jun 2009 08:39:36 GMT]]></title><description><![CDATA[<p>Barcelona schrieb:</p>
<blockquote>
<p>Hallo zusammen,</p>
<p>ich lerne an der Uni Ruby und bringe mir zu Hause C++ mit einem 900-Seiten-Wälzer gerade bei...</p>
<p>Hab' mir dort jetzt das Kapitel &quot;Arrays&quot; durchgelesen und, wenn ich das richtig verstanden habe, kann man in die Arrays nur andere Arrays oder Daten EINES bestimmten Types stecken... ist das richtig???<br />
Und ich muss vorher festlegen, wie groß der Array ist???<br />
Das würde doch die Flexibilität eines Arrays total einschränken... <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>
</blockquote>
<p>Für Flexibilität in der Größe gibts Container, oder zur Not auch simple dynamische Arrays.</p>
<blockquote>
<p>Wie kann ich denn zB folgenden Array in C++ schreiben?:<br />
array=[2, &quot;Haus&quot;, [2.2, &quot;c&quot;&rsqb;&rsqb;</p>
</blockquote>
<p>garnicht, C++ ist eine statisch typisierte Sprache, wo solche Konstrukte eher unerwünscht sind. Soetwas würde einige der Möglichkeiten untergraben, Programmierfehler bereits zur Compilezeit festzustellen.</p>
<blockquote>
<p>Und andere Frage:<br />
In meinem Buch hab' ich gar kein Kapitel über Hashes gefunden...<br />
es gibt doch wohl Hashes in C++, oder?</p>
</blockquote>
<p>Kommt drauf an was du unter Hashes verstehst. Container mit der Zuordnung von Schlüssel-Wert-Paaren nennen sich in C++ std::map und std::multimap. Hash<em>funktionen</em> werden von der Standardbibliothek nicht direkt angeboten.</p>
<p>Du solltest allgemein nicht danach trachten, C++ &quot;wie Ruby&quot; oder wie irgendeine andere Sprache zu behandeln. In verschiedenen Sprachen gibts verschiedene Programmierparadigmen, verschiedene Problemlösungsansätze und entsprechend kann man nicht die Ansätze aus einer Sprache direkt auf eine andere übertragen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733148</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 26 Jun 2009 08:39:36 GMT</pubDate></item><item><title><![CDATA[Reply to Array und Hashes in C++ on Fri, 26 Jun 2009 08:59:42 GMT]]></title><description><![CDATA[<p>Das Hashmaps nicht angeboten werden, stimmt ja nun so nicht:</p>
<pre><code class="language-cpp">std::tr1::unordered_map&lt;Key, Value&gt;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1733164</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733164</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 26 Jun 2009 08:59:42 GMT</pubDate></item><item><title><![CDATA[Reply to Array und Hashes in C++ on Fri, 26 Jun 2009 09:13:00 GMT]]></title><description><![CDATA[<p>Barcelona schrieb:</p>
<blockquote>
<p>Hallo zusammen,<br />
Hab' mir dort jetzt das Kapitel &quot;Arrays&quot; durchgelesen und, wenn ich das richtig verstanden habe, kann man in die Arrays nur andere Arrays oder Daten EINES bestimmten Types stecken... ist das richtig???</p>
</blockquote>
<p>Richtig.</p>
<p>Barcelona schrieb:</p>
<blockquote>
<p>Und ich muss vorher festlegen, wie groß der Array ist???</p>
</blockquote>
<p>Richtig.</p>
<p>Barcelona schrieb:</p>
<blockquote>
<p>Das würde doch die Flexibilität eines Arrays total einschränken... <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>
</blockquote>
<p>Ein Array ist auch nicht besonders flexibel. Und manchmal ist es genau das, was man braucht. Das Designprinzip in C und C++ ist: Don't pay for things you don't use. Elemente &quot;moderner&quot; Sprachen haben, was dies angeht, einen relativ hohen Overhead. Ich kenn micht mit Ruby nicht aus, aber da Du &quot;Hashes&quot; im Betreff drin hast, gehe ich mal davon aus, dass Du so etwas haben willst, wie std::map. In C++ kannst Du Dir aus den low-level Sprachelementen selbst höhere Abstraktionen zusammenbauen.</p>
<p>Bzgl Homogenität der C++ Container: Du vergisst, dass in anderen &quot;modernen&quot; Sprachen wie Ruby oder Java, Objekte nie direkt gehalten werden können, sondern nur über Referenzen (indirekt) erreichbar sind. Diese &quot;Referenzen&quot; sind dann eigentlich homogen, sie verweisen nur womöglich auf Objekte von unterschiedlichen dynamischen Typen (Polymorphie). Das gleiche (Indirektion) kannst Du natürlich auch in C++ haben.</p>
<p>Barcelona schrieb:</p>
<blockquote>
<p>Wie kann ich denn zB folgenden Array in C++ schreiben?:<br />
array=[2, &quot;Haus&quot;, [2.2, &quot;c&quot;&rsqb;&rsqb;</p>
</blockquote>
<p>Gar nicht. Du kannst aber -- wenn Du unbedingt willst -- soetwas machen:</p>
<pre><code class="language-cpp">#include &lt;vector&gt;
  #include &lt;string&gt;
  #include &quot;boost/any.hpp&quot;
  #include &quot;boost/tuple/tuple.hpp&quot; 

  using std::vector;
  using std::string;
  using boost::any;
  using boost::any_cast;
  using boost::tuple;
  using boost::make_tuple;

  int main() {
    vector&lt;any&gt; vec;
    vec.push_back(2);
    vec.push_back(string(&quot;Haus&quot;));
    vec.push_back(make_tuple(2.2,string(&quot;c&quot;))); 
  }
</code></pre>
<p>Das funktioneirt, weil Du jeden (&quot;Wert&quot;-) Typ zu einem &quot;any&quot; konvertieren kannst und das any-Objekt eine Heap-allozierte Kopie verwaltet, die intern durch einen Zeiger erreicht werden kann. Unter der Haube macht Ruby das wahrscheinlich genauso. In C++ brauchst Du für diese Abstraktionen keine extra Sprachelemente. Du (oder irgendein schlauer Bibliotheksentwickler) kann(st) diese Abstraktionen selbst in der C++ Sprache in Form einer Bibliothek verfassen. Die Abstraktions-Bandbreite von C++ ist recht hoch und reicht eben auch viel tiefer (low level) als Java/Ruby.</p>
<p>Ich würde Dir trotzdem davon abraten so einen any-vector zu benutzen. Du bist dann nämlich die ganze Zeit damit beschäftigt, die Typen dynamisch zu prüfen:</p>
<pre><code class="language-cpp">void foo(vector&lt;any&gt; &amp; dings) {
    typedef tuple&lt;double,string&gt; bums_t;
    for (int k=0, e=dings.size(); k&lt;e; ++k) {
      any &amp; element = dings[k];
      bums_t * ptr = any_cast&lt;bums_t&gt;(&amp;element);
      if (ptr) {
        // Objekt war wirklich ein tuple&lt;double,string&gt;
        // und ptr zeigt jetzt darauf.
      }
    }
  }
</code></pre>
<p>Das ist meistens totaler Käse. Versuche stattdessen das Typsystem von C++ sinvoll einzusetzten.</p>
<blockquote>
<p>Und andere Frage:<br />
In meinem Buch hab' ich gar kein Kapitel über Hashes gefunden.<br />
es gibt doch wohl Hashes in C++, oder?</p>
</blockquote>
<p>Es gibt assoziative Container, zB std::map.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733176</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733176</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Fri, 26 Jun 2009 09:13:00 GMT</pubDate></item><item><title><![CDATA[Reply to Array und Hashes in C++ on Fri, 26 Jun 2009 09:23:22 GMT]]></title><description><![CDATA[<p>[quote=&quot;pumuckl&quot;]</p>
<p>Barcelona schrieb:</p>
<blockquote>
<p>Du solltest allgemein nicht danach trachten, C++ &quot;wie Ruby&quot; oder wie irgendeine andere Sprache zu behandeln.</p>
</blockquote>
<p>Das kann ich nur unterstreichen. Das funktioniert nämlich genauso wenig, wie die Wort-für-Wort Übersetzung vom Chinesischen ins Deutsche.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733182</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Fri, 26 Jun 2009 09:23:22 GMT</pubDate></item></channel></rss>