<?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[warum castet er nicht?]]></title><description><![CDATA[<p>folgendes:</p>
<p>Ich habe einen Container, der Key-Value-Paare speichert. Dummerweise sortiert sich der anhand seiner Keys automatisch, was ich in diesem Fall nicht brauche</p>
<p>Normalerweise würd ich dann als Key einfach einen vorlaufenden Index verwenden und aus dem Value ein Pair machen, aber das erfordert später wieder einen entsprechenden Aufwand das Pair wieder in Key und Value aufzusplitten</p>
<p>Also dacht ich mir, mach ich eine Hilfsklasse, der ich meinen ursprünglichen Key und den Index mitgeb, nachdem der Container sortieren darf...</p>
<p>Naja... ein bisschen Code wär wohl besser...</p>
<p>also: folgendes war der erste Versuch</p>
<pre><code class="language-cpp">myMap&lt;myString, myString&gt; content;

content.insert( &quot;z&quot;, &quot;Z&quot; );
content.insert( &quot;y&quot;, &quot;Y&quot; );
content.insert( &quot;x&quot;, &quot;X&quot; );

std::cout &lt;&lt; static_cast&lt;myList&lt;myString&gt; &gt;( content.keys() ).join( &quot;,&quot; ) &lt;&lt; std::endl // keys() gibt mir alle keys zurück, die ich später weiterverarbeite
</code></pre>
<p>hat leider sortiert, was ich ja nicht wollte</p>
<p>also hab ich mir folgende Hilfsklasse gebaut</p>
<pre><code class="language-cpp">class UnsortableString
{
public:
    UnsortableString( int c, const myString&amp; content ) : _c( c ), _content( content ) {}
    UnsortableString() : _c( 0 ), _content( &quot;&quot; ) {}

    int c() const { return _c; }
    myString content() const { return _content; }

    operator myString() const { return _content; }

private:
    int _c;
    myString _content;
};

inline bool operator&lt;( const UnsortableString&amp; lhs, const UnsortableString&amp; rhs )
{
    return lhs.c() &lt; rhs.c();
}
</code></pre>
<p>folgendes kompiliert, sortiert aber wieder</p>
<pre><code class="language-cpp">myMap&lt;myString, myString&gt; content;
int c = 0;

content.insert( UnsortableString( c++, &quot;z&quot; ), &quot;Z&quot; );
content.insert( UnsortableString( c++, &quot;y&quot; ), &quot;Y&quot; );
content.insert( UnsortableString( c++, &quot;x&quot; ), &quot;X&quot; );

std::cout &lt;&lt; static_cast&lt;myList&lt;myString&gt; &gt;( content.keys() ).join( &quot;,&quot; ) &lt;&lt; std::endl
</code></pre>
<p>foldenges kompiliert nicht einmal</p>
<pre><code class="language-cpp">myMap&lt;UnsortableString, myString&gt; content;
int c = 0;

content.insert( UnsortableString( c++, &quot;z&quot; ), &quot;Z&quot; );
content.insert( UnsortableString( c++, &quot;y&quot; ), &quot;Y&quot; );
content.insert( UnsortableString( c++, &quot;x&quot; ), &quot;X&quot; );

std::cout &lt;&lt; static_cast&lt;myList&lt;myString&gt; &gt;( content.keys() ).join( &quot;, &quot; ) &lt;&lt; std::endl
</code></pre>
<p>mit der Meldung, dass er <code>myList&lt;myString&gt;</code> erwartet, aber <code>myList&lt;UnsortableString&gt;</code> bekommen hat... aber genau dafür hab ich ja <code>operator myString()</code> eingebaut -.-</p>
<p>wie lös ich das, ohne gleich einen container dafür schreiben zu müssen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/223350/warum-castet-er-nicht</link><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 22:08:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/223350.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 25 Sep 2008 07:32:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to warum castet er nicht? on Thu, 25 Sep 2008 07:32:40 GMT]]></title><description><![CDATA[<p>folgendes:</p>
<p>Ich habe einen Container, der Key-Value-Paare speichert. Dummerweise sortiert sich der anhand seiner Keys automatisch, was ich in diesem Fall nicht brauche</p>
<p>Normalerweise würd ich dann als Key einfach einen vorlaufenden Index verwenden und aus dem Value ein Pair machen, aber das erfordert später wieder einen entsprechenden Aufwand das Pair wieder in Key und Value aufzusplitten</p>
<p>Also dacht ich mir, mach ich eine Hilfsklasse, der ich meinen ursprünglichen Key und den Index mitgeb, nachdem der Container sortieren darf...</p>
<p>Naja... ein bisschen Code wär wohl besser...</p>
<p>also: folgendes war der erste Versuch</p>
<pre><code class="language-cpp">myMap&lt;myString, myString&gt; content;

content.insert( &quot;z&quot;, &quot;Z&quot; );
content.insert( &quot;y&quot;, &quot;Y&quot; );
content.insert( &quot;x&quot;, &quot;X&quot; );

std::cout &lt;&lt; static_cast&lt;myList&lt;myString&gt; &gt;( content.keys() ).join( &quot;,&quot; ) &lt;&lt; std::endl // keys() gibt mir alle keys zurück, die ich später weiterverarbeite
</code></pre>
<p>hat leider sortiert, was ich ja nicht wollte</p>
<p>also hab ich mir folgende Hilfsklasse gebaut</p>
<pre><code class="language-cpp">class UnsortableString
{
public:
    UnsortableString( int c, const myString&amp; content ) : _c( c ), _content( content ) {}
    UnsortableString() : _c( 0 ), _content( &quot;&quot; ) {}

    int c() const { return _c; }
    myString content() const { return _content; }

    operator myString() const { return _content; }

private:
    int _c;
    myString _content;
};

inline bool operator&lt;( const UnsortableString&amp; lhs, const UnsortableString&amp; rhs )
{
    return lhs.c() &lt; rhs.c();
}
</code></pre>
<p>folgendes kompiliert, sortiert aber wieder</p>
<pre><code class="language-cpp">myMap&lt;myString, myString&gt; content;
int c = 0;

content.insert( UnsortableString( c++, &quot;z&quot; ), &quot;Z&quot; );
content.insert( UnsortableString( c++, &quot;y&quot; ), &quot;Y&quot; );
content.insert( UnsortableString( c++, &quot;x&quot; ), &quot;X&quot; );

std::cout &lt;&lt; static_cast&lt;myList&lt;myString&gt; &gt;( content.keys() ).join( &quot;,&quot; ) &lt;&lt; std::endl
</code></pre>
<p>foldenges kompiliert nicht einmal</p>
<pre><code class="language-cpp">myMap&lt;UnsortableString, myString&gt; content;
int c = 0;

content.insert( UnsortableString( c++, &quot;z&quot; ), &quot;Z&quot; );
content.insert( UnsortableString( c++, &quot;y&quot; ), &quot;Y&quot; );
content.insert( UnsortableString( c++, &quot;x&quot; ), &quot;X&quot; );

std::cout &lt;&lt; static_cast&lt;myList&lt;myString&gt; &gt;( content.keys() ).join( &quot;, &quot; ) &lt;&lt; std::endl
</code></pre>
<p>mit der Meldung, dass er <code>myList&lt;myString&gt;</code> erwartet, aber <code>myList&lt;UnsortableString&gt;</code> bekommen hat... aber genau dafür hab ich ja <code>operator myString()</code> eingebaut -.-</p>
<p>wie lös ich das, ohne gleich einen container dafür schreiben zu müssen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587677</guid><dc:creator><![CDATA[zwutz]]></dc:creator><pubDate>Thu, 25 Sep 2008 07:32:40 GMT</pubDate></item><item><title><![CDATA[Reply to warum castet er nicht? on Thu, 25 Sep 2008 13:03:33 GMT]]></title><description><![CDATA[<p>vielleicht wärs einfacher wenn du erklärst was du eigentlich machen willst<br />
dein code sieht nach nem umständlichen workaround aus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587896</guid><dc:creator><![CDATA[Sovok]]></dc:creator><pubDate>Thu, 25 Sep 2008 13:03:33 GMT</pubDate></item><item><title><![CDATA[Reply to warum castet er nicht? on Thu, 25 Sep 2008 13:20:00 GMT]]></title><description><![CDATA[<p>std::map ist immer sortiert, weswegen auch der operator &lt; für den Key verfügbar sein muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587906</guid><dc:creator><![CDATA[jencas]]></dc:creator><pubDate>Thu, 25 Sep 2008 13:20:00 GMT</pubDate></item><item><title><![CDATA[Reply to warum castet er nicht? on Fri, 26 Sep 2008 07:02:09 GMT]]></title><description><![CDATA[<p>Sovok schrieb:</p>
<blockquote>
<p>vielleicht waers einfacher wenn du erklaerst was du eigentlich machen willst<br />
dein code sieht nach nem umstaendlichen workaround aus</p>
</blockquote>
<p>Die Elemente so wieder aus der Map bekommen, wie ich sie reingetan habe und zwar ohne den Key aendern zu muessen</p>
<p>Ich nutze die map um die Felder zu speichern, die ich aus einer Datenbank laden will. Der Key ist der Name des Feldes, der value der Wert, der in meiner Anwendung statt des Feldnamens angezeigt werden soll. Da mir die Map die nette Funktion bietet, alle Keys in einer Liste zurueckgeben zu lassen, die ich ueber ein <code>join()</code> direkt in den DB-Query einbauen kann, wollte ich auf den &quot;Komfort&quot; nicht verzichten</p>
<p>Ich habs jetzt aber anders geloest. Der Key ist nun ein Index, der Value ein pair. Musste nur noch ne Funktion schreiben, die mir die Liste an pairs entsprechend joinen kann</p>
<p>jencas schrieb:</p>
<blockquote>
<p>std::map ist immer sortiert, weswegen auch der operator &lt; fuer den Key verfuegbar sein muss.</p>
</blockquote>
<p>und? Den Operator hab ich implementiert, also was willst du mir sagen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588241</guid><dc:creator><![CDATA[zwutz]]></dc:creator><pubDate>Fri, 26 Sep 2008 07:02:09 GMT</pubDate></item><item><title><![CDATA[Reply to warum castet er nicht? on Fri, 26 Sep 2008 07:53:21 GMT]]></title><description><![CDATA[<p>Um das mal zusammenzufassen was ich deinen Ausführungen bisher entnehmen konnte:</p>
<p>Du willst key-value-Paare in einen Container stopfen und zwar so, dass du möglichst sowohl eine Suche/Sortierung über den Key als auch eine Suche/Sortierung über die input-Reihenfolge machen kannst.</p>
<p>Vielleicht helfen dir die <a href="http://www.boost.org/doc/libs/1_36_0/libs/multi_index/doc/index.html" rel="nofollow">boost::multi_index_container</a> da weiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588282</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 26 Sep 2008 07:53:21 GMT</pubDate></item></channel></rss>