<?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[mein std::vector spielt verrückt]]></title><description><![CDATA[<p>Hallo zusammen!</p>
<p>nachdem ich nun mal wieder etwas Zeit gefunden habe, wollte ich mit meinem kleinen Projekt weiter machen.<br />
Wer sich noch an meinen letzten Post erinnern kann, weiß dass ich einige Probleme hatte. Auch hier stehe ich jetzt wieder<br />
vor einem Problem, für das mir keine Lösung mehr einfällt. Ich hoffe, dass ihr mir nochmal so gut helfen könnt.</p>
<p>Erst mal eine kleine Beschreibung. Den vector muss ich glaube ich nicht erklären, außer dass er später besser befüllt wird wie es momentan aussieht.<br />
Ist nur zum Test. <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="😉"
    /> In dem Schleifengebilde soll gezählt werden wie viele Schiffe eines jeden Typs vorhanden sind.<br />
WADR 9 | SFGT 6 | DNGT 5 | LFGT 2<br />
Das steckt in meinem vector. Ausgegeben bekomme ich aber folgendes:</p>
<p>pos: LFGT<br />
ship_range.first: SFGT<br />
ship_range.second: SFGT<br />
LFGT: 0</p>
<p>pos: WADR<br />
ship_range.first: WADR<br />
ship_range.second: SFGT<br />
WADR: 9</p>
<p>pos: SFGT<br />
ship_range.first: SFGT<br />
ship_range.second: DNGT<br />
SFGT: 6</p>
<p>pos: DNGT<br />
ship_range.first: DNGT<br />
ship_range.second:<br />
DNGT: 7</p>
<p>Je nachdem in welcher Reihenfolge ich die Objekte in den vector schiebe, bekomme ich eine andere Ausgabe. Also wenn ich z.b. die SFGT vor den WADR in den vector schiebe sieht die Ausgabe schon wieder anders aus.<br />
Teilweise werden 11 WADR oder 8 SFGT angezeigt. Es ist aber auch einmal vorgekommen, dass ich einen Fehler in der _algobase.h erhalte.</p>
<p>Ich verstehe einfach nicht wo hier der Fehler sein soll. Wenn ich in Gedanken die Schleife durchgehe, passt meiner Meinung nach alles.<br />
Vor allem da ja die Reihenfolge, mit der ich die Elemente in den vector schiebe, starken einfluss darauf hat, gehe ich davon aus, dass<br />
ich hier einen großen Fehler mache.</p>
<p>So wie ich mir denke, habe ich hier einfach nur einen sehr dummen Fehler gemacht, der bedingt durch Mangel an Erfahrung entstanden ist.</p>
<p>Gruß Spartaner</p>
<pre><code class="language-cpp">// id ist einfach ein int, um die Typen zu vergleichen. 
bool operator&lt; (const c_ship&amp; l, const c_ship&amp; r)
{
   return l.get_id() &lt; r.get_id();
}

// ...

   std::vector&lt;c_ship&gt; ships;

   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_WADR));

   ships.push_back(c_ship(s_SFGT));
   ships.push_back(c_ship(s_SFGT));
   ships.push_back(c_ship(s_SFGT));
   ships.push_back(c_ship(s_SFGT));
   ships.push_back(c_ship(s_SFGT));
   ships.push_back(c_ship(s_SFGT));

   ships.push_back(c_ship(s_DNGT));
   ships.push_back(c_ship(s_DNGT));
   ships.push_back(c_ship(s_DNGT));
   ships.push_back(c_ship(s_DNGT));
   ships.push_back(c_ship(s_DNGT));

   ships.push_back(c_ship(s_LFGT));
   ships.push_back(c_ship(s_LFGT));

   // Prioritätenliste festlegen
   std::vector&lt;std::string&gt; prio;
      prio.push_back(s_LFGT);
      prio.push_back(s_WADR);
      prio.push_back(s_SFGT);
      prio.push_back(s_DNGT);

   // pair, um die Menge eines Schiffstypes zu ermitteln
   std::pair&lt;std::vector&lt;c_ship&gt;::iterator, std::vector&lt;c_ship&gt;::iterator&gt; ship_range;
   ship_range = std::equal_range(ships.begin(), ships.end(), c_ship(s_DNGT));

   // Hauptschleife zum durchlaufen der Prioliste
   for(std::vector&lt;std::string&gt;::iterator pos = prio.begin(); pos != prio.end(); ++pos)
   {
      std::cout &lt;&lt; &quot;pos: &quot; &lt;&lt; *pos &lt;&lt; std::endl;

      // pair mit dem Schiffsbereich initialisieren
      ship_range = std::equal_range(ships.begin(), ships.end(), c_ship(*pos));
      // Anhand des pair die Schiffe zählen
      int i = 0;
      std::cout &lt;&lt; &quot;ship_range.first:&quot; &lt;&lt; ship_range.first-&gt;get_type() &lt;&lt; std::endl;
      std::cout &lt;&lt; &quot;ship_range.second:&quot; &lt;&lt; ship_range.second-&gt;get_type() &lt;&lt; std::endl;

      for(std::vector&lt;c_ship&gt;::iterator target = ship_range.first; target != ship_range.second; ++target)
      {
         ++i;

      }

         // Ausgabe der gezählten Schiffe
         std::cout &lt;&lt; *pos &lt;&lt; &quot;: &quot; &lt;&lt; i &lt;&lt; &quot;\n\n&quot;;

   }
</code></pre>
<p>Hier auch nochmal der Teil der _algobase.h, wo der Fehler auftaucht</p>
<pre><code class="language-cpp">_algobase.h

template &lt;class _RandomAccessIter, class _OutputIter, class _Distance&gt;
inline _OutputIter
__copy(_RandomAccessIter __first, _RandomAccessIter __last,
       _OutputIter __result, const random_access_iterator_tag &amp;, _Distance*) {
  for (_Distance __n = __last - __first; __n &gt; 0; --__n) {
    *__result = *__first; // Hier soll der Fehler sein
    ++__first;
    ++__result;
  }
  return __result;
}
</code></pre>
<p>Gruß Spartaner</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/179785/mein-std-vector-spielt-verrückt</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 10:14:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/179785.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 25 Apr 2007 11:31:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to mein std::vector spielt verrückt on Wed, 25 Apr 2007 11:52:12 GMT]]></title><description><![CDATA[<p>Hallo zusammen!</p>
<p>nachdem ich nun mal wieder etwas Zeit gefunden habe, wollte ich mit meinem kleinen Projekt weiter machen.<br />
Wer sich noch an meinen letzten Post erinnern kann, weiß dass ich einige Probleme hatte. Auch hier stehe ich jetzt wieder<br />
vor einem Problem, für das mir keine Lösung mehr einfällt. Ich hoffe, dass ihr mir nochmal so gut helfen könnt.</p>
<p>Erst mal eine kleine Beschreibung. Den vector muss ich glaube ich nicht erklären, außer dass er später besser befüllt wird wie es momentan aussieht.<br />
Ist nur zum Test. <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="😉"
    /> In dem Schleifengebilde soll gezählt werden wie viele Schiffe eines jeden Typs vorhanden sind.<br />
WADR 9 | SFGT 6 | DNGT 5 | LFGT 2<br />
Das steckt in meinem vector. Ausgegeben bekomme ich aber folgendes:</p>
<p>pos: LFGT<br />
ship_range.first: SFGT<br />
ship_range.second: SFGT<br />
LFGT: 0</p>
<p>pos: WADR<br />
ship_range.first: WADR<br />
ship_range.second: SFGT<br />
WADR: 9</p>
<p>pos: SFGT<br />
ship_range.first: SFGT<br />
ship_range.second: DNGT<br />
SFGT: 6</p>
<p>pos: DNGT<br />
ship_range.first: DNGT<br />
ship_range.second:<br />
DNGT: 7</p>
<p>Je nachdem in welcher Reihenfolge ich die Objekte in den vector schiebe, bekomme ich eine andere Ausgabe. Also wenn ich z.b. die SFGT vor den WADR in den vector schiebe sieht die Ausgabe schon wieder anders aus.<br />
Teilweise werden 11 WADR oder 8 SFGT angezeigt. Es ist aber auch einmal vorgekommen, dass ich einen Fehler in der _algobase.h erhalte.</p>
<p>Ich verstehe einfach nicht wo hier der Fehler sein soll. Wenn ich in Gedanken die Schleife durchgehe, passt meiner Meinung nach alles.<br />
Vor allem da ja die Reihenfolge, mit der ich die Elemente in den vector schiebe, starken einfluss darauf hat, gehe ich davon aus, dass<br />
ich hier einen großen Fehler mache.</p>
<p>So wie ich mir denke, habe ich hier einfach nur einen sehr dummen Fehler gemacht, der bedingt durch Mangel an Erfahrung entstanden ist.</p>
<p>Gruß Spartaner</p>
<pre><code class="language-cpp">// id ist einfach ein int, um die Typen zu vergleichen. 
bool operator&lt; (const c_ship&amp; l, const c_ship&amp; r)
{
   return l.get_id() &lt; r.get_id();
}

// ...

   std::vector&lt;c_ship&gt; ships;

   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_WADR));

   ships.push_back(c_ship(s_SFGT));
   ships.push_back(c_ship(s_SFGT));
   ships.push_back(c_ship(s_SFGT));
   ships.push_back(c_ship(s_SFGT));
   ships.push_back(c_ship(s_SFGT));
   ships.push_back(c_ship(s_SFGT));

   ships.push_back(c_ship(s_DNGT));
   ships.push_back(c_ship(s_DNGT));
   ships.push_back(c_ship(s_DNGT));
   ships.push_back(c_ship(s_DNGT));
   ships.push_back(c_ship(s_DNGT));

   ships.push_back(c_ship(s_LFGT));
   ships.push_back(c_ship(s_LFGT));

   // Prioritätenliste festlegen
   std::vector&lt;std::string&gt; prio;
      prio.push_back(s_LFGT);
      prio.push_back(s_WADR);
      prio.push_back(s_SFGT);
      prio.push_back(s_DNGT);

   // pair, um die Menge eines Schiffstypes zu ermitteln
   std::pair&lt;std::vector&lt;c_ship&gt;::iterator, std::vector&lt;c_ship&gt;::iterator&gt; ship_range;
   ship_range = std::equal_range(ships.begin(), ships.end(), c_ship(s_DNGT));

   // Hauptschleife zum durchlaufen der Prioliste
   for(std::vector&lt;std::string&gt;::iterator pos = prio.begin(); pos != prio.end(); ++pos)
   {
      std::cout &lt;&lt; &quot;pos: &quot; &lt;&lt; *pos &lt;&lt; std::endl;

      // pair mit dem Schiffsbereich initialisieren
      ship_range = std::equal_range(ships.begin(), ships.end(), c_ship(*pos));
      // Anhand des pair die Schiffe zählen
      int i = 0;
      std::cout &lt;&lt; &quot;ship_range.first:&quot; &lt;&lt; ship_range.first-&gt;get_type() &lt;&lt; std::endl;
      std::cout &lt;&lt; &quot;ship_range.second:&quot; &lt;&lt; ship_range.second-&gt;get_type() &lt;&lt; std::endl;

      for(std::vector&lt;c_ship&gt;::iterator target = ship_range.first; target != ship_range.second; ++target)
      {
         ++i;

      }

         // Ausgabe der gezählten Schiffe
         std::cout &lt;&lt; *pos &lt;&lt; &quot;: &quot; &lt;&lt; i &lt;&lt; &quot;\n\n&quot;;

   }
</code></pre>
<p>Hier auch nochmal der Teil der _algobase.h, wo der Fehler auftaucht</p>
<pre><code class="language-cpp">_algobase.h

template &lt;class _RandomAccessIter, class _OutputIter, class _Distance&gt;
inline _OutputIter
__copy(_RandomAccessIter __first, _RandomAccessIter __last,
       _OutputIter __result, const random_access_iterator_tag &amp;, _Distance*) {
  for (_Distance __n = __last - __first; __n &gt; 0; --__n) {
    *__result = *__first; // Hier soll der Fehler sein
    ++__first;
    ++__result;
  }
  return __result;
}
</code></pre>
<p>Gruß Spartaner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273112</guid><dc:creator><![CDATA[Spartaner]]></dc:creator><pubDate>Wed, 25 Apr 2007 11:52:12 GMT</pubDate></item><item><title><![CDATA[Reply to mein std::vector spielt verrückt on Wed, 25 Apr 2007 11:43:34 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>mal vorab (Code schau ich mir später an): Du weißt, dass vector nicht sortiert ?<br />
Wenn Du sortieren möchtest (und Dein Zählalgo sieht danach aus), solltest Du ein multiset nehmen. equal_range() jedenfalls sucht IIRC nur vom ersten &quot;passenden&quot; bis zum ersten &quot;unpassenden&quot; Element - wenn &quot;danach&quot; noch &quot;passende&quot; kommen, merkt das equal_range() nicht und es wäre auch seltsam, in dem Zusammenhang von &quot;Range&quot; zu sprechen.<br />
Alternativ könntest Du auch ein sort über den vector jagen....</p>
<p>Spartaner schrieb:</p>
<blockquote>
<p>...Es ist aber auch einmal vorgekommen, dass ich einen Fehler in der _algobase.h erhalte....<br />
Hier auch nochmal der Teil der _algobase.h, wo der Fehler auftaucht...</p>
</blockquote>
<p>Das ist sehr viel einfach zu beantworten, wenn Du sagst, <em>welcher</em> Fehler aufgetreten ist (Compile ? Link ? Laufzeit ? Was Fehlermeldung ? Absturz ? Assert ? ....)</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273117</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 25 Apr 2007 11:43:34 GMT</pubDate></item><item><title><![CDATA[Reply to mein std::vector spielt verrückt on Wed, 25 Apr 2007 11:58:25 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>das vector nicht sortiert ist mir bekannt. Allerdings muss auch nicht sortiert werden, da die Elemente in der Reihenfolge wie ich sie in den vector packe sortiert sind und auch so bleiben. Allerdings kann ich natürlich auch ein multiset nehmen.</p>
<p>Zu der Fehlermeldung. Diese tritt nur auf, wenn ich die Objekte in folgender Reihenfolge in den vector packe. 1. sfgt, 2. wadr, 3. dngt, 4. lfgt. Dies kann ich auch absolut nicht nachvollziehen, da es ja Instanzen der selben Klasse sind. Der einzige Unterschied sind andere Werte für die Variablen.</p>
<p>Aber hier die Fehlermeldung:</p>
<pre><code>Im Projekt ist eine Exception der Klasse EAccessViolation aufgetreten. Medung : &quot;Zugriffsverletzung bei Adresse ...&quot;
</code></pre>
<p>Und dann zeigt er mir halt die Zeile in der _algobase.h an.</p>
<p>Gruß Spartaner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273133</guid><dc:creator><![CDATA[Spartaner]]></dc:creator><pubDate>Wed, 25 Apr 2007 11:58:25 GMT</pubDate></item><item><title><![CDATA[Reply to mein std::vector spielt verrückt on Wed, 25 Apr 2007 12:23:29 GMT]]></title><description><![CDATA[<p>Spartaner schrieb:</p>
<blockquote>
<p>Hi,</p>
<p>das vector nicht sortiert ist mir bekannt. Allerdings muss auch nicht sortiert werden, da die Elemente in der Reihenfolge wie ich sie in den vector packe sortiert sind und auch so bleiben....</p>
</blockquote>
<p>Nun das:</p>
<p>Spartaner schrieb:</p>
<blockquote>
<p>...<br />
Je nachdem in welcher Reihenfolge ich die Objekte in den vector schiebe, bekomme ich eine andere Ausgabe....</p>
</blockquote>
<p>zusammen mit dem Code hat bei mir einen anderen Eindruck hinterlassen.<br />
Du zählst, indem Du erst einen Untermenge bildest (per equal_range()) und deren Elemente zählst ... das ist aber abhängig von der Reihenfolge im vector.<br />
und es erklärt auch die Schutzverletzung.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">// Version 1
   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_SFGT)); 
   ships.push_back(c_ship(s_SFGT)); 
// -&gt;
// [s_WADR, s_WADR, s_WADR, s_SFGT, s_SFGT]
   equal_range(..., s_WADR)); // liefert iterator auf ships[0] und ships[3]
// =&gt; 3 Elemente !

// Version 2
   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_SFGT)); 
   ships.push_back(c_ship(s_WADR));
   ships.push_back(c_ship(s_SFGT)); 

// -&gt;
// [s_WADR, s_WADR, s_SFGT, s_WADR, s_SFGT]
   equal_range(..., s_WADR)); // liefert iterator auf ships[0] und ships[4]
// =&gt; 5 Elemente !
</code></pre>
<p>Nochmal: equal_range() sucht den ersten passenden (von vorne) und den letzten unpassenden (von hinten) !! Es schaut nicht nach, ob dazwischen noch unpassende sind - was sollte es denn auch tun ?</p>
<p>Bei &quot;Einelementigen Ranges&quot; (so auch in dem Fall mit den streng alternierenden Elementen) hast Du bestimmt irgendwo &quot;einen zuviel oder einen zuwenig&quot; (Nach Aussage unseres Beraters die Ursache für min. 90% aller Programmierfehler <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 />
Ich sehe zwar noch nicht, wo, aber bin davon ziemlich überzeugt.</p>
<p>Noch ein kleiner Trick: Du kannst Iteratoren auch einfach subtrahieren und Du bekommst die Anzahl der Elemente dazwischen.... die letzte &quot;Zählschleife&quot; brauchst Du also nicht. <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>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273139</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 25 Apr 2007 12:23:29 GMT</pubDate></item><item><title><![CDATA[Reply to mein std::vector spielt verrückt on Wed, 25 Apr 2007 12:13:39 GMT]]></title><description><![CDATA[<p>Spartaner schrieb:</p>
<blockquote>
<p>das vector nicht sortiert ist mir bekannt. Allerdings muss auch nicht sortiert werden, da die Elemente in der Reihenfolge wie ich sie in den vector packe sortiert sind und auch so bleiben. Allerdings kann ich natürlich auch ein multiset nehmen.</p>
</blockquote>
<p>Ist dir auch bekannt, daß equal_range eine sortierte Grundmenge erwartet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273145</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 25 Apr 2007 12:13:39 GMT</pubDate></item><item><title><![CDATA[Reply to mein std::vector spielt verrückt on Wed, 25 Apr 2007 12:30:24 GMT]]></title><description><![CDATA[<p>@ Simon2: zu deinem Beispiel. Das ist mir schon klar, wo der first und der second iterator hin zeigt. Bloß da die Objekte ja so wie in meinem Codeschnipsel gezeigt, sortiert vorliegen, sollte doch alles funktionieren. Siehe deine Version 1. Genau dass möchte ich ja haben.</p>
<blockquote>
<p>pos: LFGT<br />
ship_range.first: SFGT<br />
ship_range.second: SFGT<br />
LFGT: 0</p>
</blockquote>
<p>1. Schleifendurchlauf, pos zeigt auf LFGT. Doch warum zeigt schip_range.first auf SFGT und nicht auf LFGT? und auch .second ist falsch. Er müsste ja auf ein Element nach dem letzten LFGT zeigen, also hier ins leere.</p>
<blockquote>
<p>Noch ein kleiner Trick: Du kannst Iteratoren auch einfach subtrahieren und Du bekommst die Anzahl der Elemente dazwischen.... die letzte &quot;Zählschleife&quot; brauchst Du also nicht.</p>
</blockquote>
<p>Danke! Ist ja auch logisch, aber man macht sich ja immer mehr arbeit als nötig <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 werde es jetzt einfach mal mit einem multiset versuchen. So wie es aussieht, dürfte es damit dann ja funktionieren, hoffe ich doch.</p>
<p>Gruß Spartaner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273160</guid><dc:creator><![CDATA[Spartaner]]></dc:creator><pubDate>Wed, 25 Apr 2007 12:30:24 GMT</pubDate></item><item><title><![CDATA[Reply to mein std::vector spielt verrückt on Wed, 25 Apr 2007 12:54:11 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>nochmal eine Frage: Wie &quot;funktioniert&quot; bei Dir &quot;id&quot; ?<br />
Wie wird das gefüllt ? Wenn Du da irgendwelche &quot;Spielchen mit statics&quot; machst - sind die &quot;copy-safe&quot; ?</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273182</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 25 Apr 2007 12:54:11 GMT</pubDate></item><item><title><![CDATA[Reply to mein std::vector spielt verrückt on Wed, 25 Apr 2007 12:55:20 GMT]]></title><description><![CDATA[<p>Mit dem multiset funktioniert es wunderbar.</p>
<p>Aber ich möchte doch noch verstehen, warum es mit dem vector nicht funktioniert hat. Wenn die Objekte im vector jetzt nicht sortiert wären, bräuchte man nicht mehr drüber diskutieren. Dass es dann nicht funktioniert ist klar. Aber da die Elemente ja sortiert vorliegen, verstehe ich es nicht. Oder verstehe ich den Begriff &quot;Sortiert&quot; falsch?</p>
<p>1. 111222333444555666777</p>
<p>2. 222111444333555777666</p>
<p>3. 123134732452346473452</p>
<p>1. Ist ja ganz klar sortiert. Identische Elemente sind direkt nebeneinander und es ist nach größe geordnet.</p>
<p>2. Zählt dies jetzt auch als sortiert oder als unsortiert? Identische Objekte sind zwar nebeneinander, aber die unterschiedlichen typen sind nicht nach Größe sortiert. Meiner Meinung nach müsste mir equal_range aber trotzdem das richtige Iteratorpaar liefern. Wo ich hier aber wohl falsch liege.</p>
<p>3. dazu brauche ich wohl nichts sagen <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>Gruß Spartaner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273184</guid><dc:creator><![CDATA[Spartaner]]></dc:creator><pubDate>Wed, 25 Apr 2007 12:55:20 GMT</pubDate></item><item><title><![CDATA[Reply to mein std::vector spielt verrückt on Wed, 25 Apr 2007 12:56:40 GMT]]></title><description><![CDATA[<p>id wird im Konstruktor der c_ship-Klasse gesetzt. Je nach Typ (sfgt, wadr...) habe ich sie einfach durchnummeriert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273186</guid><dc:creator><![CDATA[Spartaner]]></dc:creator><pubDate>Wed, 25 Apr 2007 12:56:40 GMT</pubDate></item><item><title><![CDATA[Reply to mein std::vector spielt verrückt on Wed, 25 Apr 2007 12:57:52 GMT]]></title><description><![CDATA[<p>&quot;Sortiert&quot; aus Sicht der STL bedeutet &quot;aufsteigend geordnet&quot; (gemäß deiner Definition von &lt;). Also solange du von der Standard-Implementierung ausgehst, ist die zweite Reihe nicht sortiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273187</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 25 Apr 2007 12:57:52 GMT</pubDate></item><item><title><![CDATA[Reply to mein std::vector spielt verrückt on Wed, 25 Apr 2007 12:58:37 GMT]]></title><description><![CDATA[<p>Spartaner schrieb:</p>
<blockquote>
<p>2. Zählt dies jetzt auch als sortiert oder als unsortiert?</p>
</blockquote>
<p>Unsortiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273188</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273188</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 25 Apr 2007 12:58:37 GMT</pubDate></item><item><title><![CDATA[Reply to mein std::vector spielt verrückt on Wed, 25 Apr 2007 12:59:25 GMT]]></title><description><![CDATA[<p>Spartaner schrieb:</p>
<blockquote>
<p>id wird im Konstruktor der c_ship-Klasse gesetzt. Je nach Typ (sfgt, wadr...) habe ich sie einfach durchnummeriert.</p>
</blockquote>
<p>Hi,</p>
<p>das heißt, der &quot;type&quot; sfgt bekommt immer die id 1, wadr die id2, .... ?<br />
Dann könntest Du das Ganze ja auch mit type statt mit id machen - oder möchtest Du da Performance sparen ?</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273190</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273190</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 25 Apr 2007 12:59:25 GMT</pubDate></item><item><title><![CDATA[Reply to mein std::vector spielt verrückt on Wed, 25 Apr 2007 13:09:47 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a> und MFK: Dann ist mir jetzt auch absolut verständlich, warum es nicht funktioniert hat. Ich habe das 2. immer als sortiert betrachtet.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13624">@Simon2</a>: Ja, die einzelnen Typen haben immer die gleiche id. Und ja, das könnte ich auch mit dem type machen. Anfangs hatte ich es auch damit gemacht. Bloß da ich einfach nicht mehr wusste, woran der Fehler liegen könnte, wollte ich den vergleich mal mit einem einfachen int statt einem string machen.</p>
<p>Also mit Perfomance hat es hier weniger zu tun. Es war eher die pure Verzweiflung <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>Aber wo du gerade von Performance sprichst, machst sich dies so stark bemerkbar?</p>
<p>Gruß Spartaner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273205</guid><dc:creator><![CDATA[Spartaner]]></dc:creator><pubDate>Wed, 25 Apr 2007 13:09:47 GMT</pubDate></item><item><title><![CDATA[Reply to mein std::vector spielt verrückt on Wed, 25 Apr 2007 13:18:07 GMT]]></title><description><![CDATA[<p>Spartaner schrieb:</p>
<blockquote>
<p>...<br />
Aber wo du gerade von Performance sprichst, machst sich dies so stark bemerkbar?</p>
<p>Gruß Spartaner</p>
</blockquote>
<p>Das kann man eigentlich nur durch Messungen herausbekommen. Wenn Du bislang keine Performanceprobleme gespürt hast, würde ich mir die Mühe sparen - das kann man auch noch nachträglich optimieren (und dann besser/zielgerichteter).</p>
<p>Spartaner schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a> und MFK: Dann ist mir jetzt auch absolut verständlich, warum es nicht funktioniert hat. Ich habe das 2. immer als sortiert betrachtet....</p>
</blockquote>
<p>Na ... immerhin hast Du einen &quot;operator&lt;&quot; implementiert (und keinen operator==) - hätte ein Hinweis darauf sein können, nach welchem Kriterium und wie er vergleicht <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="😉"
    /> <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>Um Dir noch einen kleinen Tipp zu geben: Es gibt auch std::count und std::count_if() .... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273207</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 25 Apr 2007 13:18:07 GMT</pubDate></item><item><title><![CDATA[Reply to mein std::vector spielt verrückt on Wed, 25 Apr 2007 13:17:40 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Das kann man eigentlich nur durch Messungen herausbekommen</p>
</blockquote>
<p>Das passt jetzt zwar nicht mehr ganz zum Thema, aber wie wird sowas eigentlich gemessen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273210</guid><dc:creator><![CDATA[Spartaner]]></dc:creator><pubDate>Wed, 25 Apr 2007 13:17:40 GMT</pubDate></item><item><title><![CDATA[Reply to mein std::vector spielt verrückt on Wed, 25 Apr 2007 13:46:42 GMT]]></title><description><![CDATA[<p>Spartaner schrieb:</p>
<blockquote>
<p>Simon2 schrieb:</p>
<blockquote>
<p>Das kann man eigentlich nur durch Messungen herausbekommen</p>
</blockquote>
<p>Das passt jetzt zwar nicht mehr ganz zum Thema, aber wie wird sowas eigentlich gemessen?</p>
</blockquote>
<p>Oh - &quot;das ist ein weiters Feld&quot;. Angefangen vom persönlichen Empfinden des Users bis hin zu Zeit- und Häufigkeitsmessungen (&quot;Profiling&quot;) auf Ebene der einzelnen Methodenaufrufe. Dabei ist eigentlich eher die Schwierigkeit, die richtigen Messpunkte und -szenarien zu finden. An den Messpunkten kann man dann mit den Sachen in <a href="http://www.cppreference.com/stddate/index.html" rel="nofollow">ctime</a> (v.A. time() ) Start- und Endzeitpunkt feststellen und die Differenz messen.</p>
<p>BTW: hast Du meinen Hinweis auf die std::count's gesehen ?</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273248</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 25 Apr 2007 13:46:42 GMT</pubDate></item><item><title><![CDATA[Reply to mein std::vector spielt verrückt on Wed, 25 Apr 2007 14:00:53 GMT]]></title><description><![CDATA[<p>Ok, also dass klingt dann doch ziemlich umfangreich.</p>
<p>Ja, hab deinen Hinweis gesehen. Habe ich auch schonmal gehört, musste aber doch erst nochmal nachschlagen, da ich dies bisher auch noch nicht genutzt habe.</p>
<p>Zum zählen der Elemente ist es sicherlich hilfreich. Ich benötige allerdings das Iteratoren-Paar. Das Zählen habe ich nur eingbaut um zu überprüfen ob es so funktioniert wie es soll.</p>
<p>Gruß Spartaner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273265</guid><dc:creator><![CDATA[Spartaner]]></dc:creator><pubDate>Wed, 25 Apr 2007 14:00:53 GMT</pubDate></item><item><title><![CDATA[Reply to mein std::vector spielt verrückt on Wed, 25 Apr 2007 14:37:35 GMT]]></title><description><![CDATA[<p>Spartaner schrieb:</p>
<blockquote>
<p>...Ich benötige allerdings das Iteratoren-Paar. Das Zählen habe ich nur eingbaut um zu überprüfen ob es so funktioniert wie es soll.</p>
<p>Gruß Spartaner</p>
</blockquote>
<p>Ach so !!<br />
OK, dann hast Du mit equal_range() ja schon genau das, was Du brauchst.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273306</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 25 Apr 2007 14:37:35 GMT</pubDate></item></channel></rss>