<?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[Welchen Container?]]></title><description><![CDATA[<p>Hallo allerseits,</p>
<p>gibt es einen Container der ähnlich std::set nur ungleiche Elemente zulässt mit dem Unterschied das die Reihenfolge der Elemente der Einfüge-Reihenfolge entspricht?</p>
<p>Danke schön</p>
<p>P.S Meinetwegen auch einen boost-Container</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/307348/welchen-container</link><generator>RSS for Node</generator><lastBuildDate>Thu, 06 Aug 2026 20:50:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/307348.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 24 Aug 2012 07:56:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 07:56:43 GMT]]></title><description><![CDATA[<p>Hallo allerseits,</p>
<p>gibt es einen Container der ähnlich std::set nur ungleiche Elemente zulässt mit dem Unterschied das die Reihenfolge der Elemente der Einfüge-Reihenfolge entspricht?</p>
<p>Danke schön</p>
<p>P.S Meinetwegen auch einen boost-Container</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245048</guid><dc:creator><![CDATA[goran]]></dc:creator><pubDate>Fri, 24 Aug 2012 07:56:43 GMT</pubDate></item><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 08:03:06 GMT]]></title><description><![CDATA[<p>dass</p>
<p>Ansonsten: Was spricht gegen std::vector + std::find? (Außer dass es scheiße langsam ist, wenn viele Elemente drin stecken.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245050</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Fri, 24 Aug 2012 08:03:06 GMT</pubDate></item><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 08:02:02 GMT]]></title><description><![CDATA[<p>Nein, das ist ja auch nicht trivial effizient umzusetzen.</p>
<p>Was genau willst du mit diesem Container machen - je nachdem gibt es ein paar unterschiedliche Lösungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245051</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245051</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 24 Aug 2012 08:02:02 GMT</pubDate></item><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 08:05:20 GMT]]></title><description><![CDATA[<p>Wie wäre es mit einer map, bei der du als Schlüssel einen fortlaufenden Index verwendest?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245054</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Fri, 24 Aug 2012 08:05:20 GMT</pubDate></item><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 08:06:22 GMT]]></title><description><![CDATA[<p>daddy_felix schrieb:</p>
<blockquote>
<p>Wie wäre es mit einer map, bei der du als Schlüssel einen fortlaufenden Index verwendest?</p>
</blockquote>
<p>Denk da lieber noch mal drüber nach. <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/2245056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245056</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Fri, 24 Aug 2012 08:06:22 GMT</pubDate></item><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 08:10:57 GMT]]></title><description><![CDATA[<p>Der Container wird nur mit wenigen Elementen gefüllt. Das Anwendungsszenario: Einfach ausgedrückt soll eine Kette von Filtern durchgegangen werden wobei der Input eines Filter gleich dem Output des nächsten Filters ist. Jeder Filter soll nur einmal vorkommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245058</guid><dc:creator><![CDATA[goran]]></dc:creator><pubDate>Fri, 24 Aug 2012 08:10:57 GMT</pubDate></item><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 08:16:10 GMT]]></title><description><![CDATA[<p>goran schrieb:</p>
<blockquote>
<p>Hallo allerseits,</p>
<p>gibt es einen Container der ähnlich std::set nur ungleiche Elemente zulässt mit dem Unterschied das die Reihenfolge der Elemente der Einfüge-Reihenfolge entspricht?</p>
<p>Danke schön</p>
<p>P.S Meinetwegen auch einen boost-Container</p>
</blockquote>
<p>Mein Vorschlag:<br />
<code>std::set</code> mit einem Compare-Funktor der einfach immer true zurück gibt. Der Witz ist jetzt, das als letztes eingefügte Element ist an Stelle eins ( <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> die Reihenfolge ist verkehrt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> ):</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
struct insertion_order : std::binary_function &lt;T,T,bool&gt;
{
        bool operator() (const T&amp;, const T&amp;) const
        {
                return true;
        }
};

typedef std::set&lt;int, insertion_order&lt;int&gt; &gt;  sequential_set;
</code></pre>
<p>Dann müsstest du, wenn du es brauchst, einfach immer <code>std::reverse</code> aufrufen bevor du iterierst, oder <code>rbegin</code> + <code>rend</code> als Start/End Iteratorenpaar benutzen.</p>
<p>Edit: Shit, daddy_felix hat es schon vorgeschlagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245059</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245059</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Fri, 24 Aug 2012 08:16:10 GMT</pubDate></item><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 08:16:13 GMT]]></title><description><![CDATA[<p>goran schrieb:</p>
<blockquote>
<p>Der Container wird nur mit wenigen Elementen gefüllt. Das Anwendungsszenario: Einfach ausgedrückt soll eine Kette von Filtern durchgegangen werden wobei der Input eines Filter gleich dem Output des nächsten Filters ist. Jeder Filter soll nur einmal vorkommen.</p>
</blockquote>
<p>Dann würde ich einfach einen vector nehmen und per find/find_if vorher prüfen ob der Filter schon vorhanden ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245060</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 24 Aug 2012 08:16:13 GMT</pubDate></item><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 08:21:30 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Mein Vorschlag:<br />
<code>std::set</code> mit einem Compare-Funktor der einfach immer true zurück gibt. Der Witz ist jetzt, das als letztes eingefügte Element ist an Stelle eins ( <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> die Reihenfolge ist verkehrt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> ):</p>
</blockquote>
<p>Denk da nochmal drüber nach.</p>
<p>Was passiert wenn ich 1,2,3,1,2,3,1,2,3 einfüge?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245061</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 24 Aug 2012 08:21:30 GMT</pubDate></item><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 08:34:09 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>daddy_felix schrieb:</p>
<blockquote>
<p>Wie wäre es mit einer map, bei der du als Schlüssel einen fortlaufenden Index verwendest?</p>
</blockquote>
<p>Denk da lieber noch mal drüber nach. <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>
</blockquote>
<p>ach ok, das ist Mist. So langsam brauche ich Wochenende...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245068</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Fri, 24 Aug 2012 08:34:09 GMT</pubDate></item><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 08:35:07 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Dann würde ich einfach einen vector nehmen und per find/find_if vorher prüfen ob der Filter schon vorhanden ist.</p>
</blockquote>
<p>Das dürfte bei wenigen Einträgen auf jeden Fall am effizientesten sein. Wenn es denn mal mehr werden, dürfte eine Kombination schneller sein (messen!): ein std::set zum Prüfen auf doppelte Einträge, zusätzlich ein std::vector für die Reihenfolge.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245069</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Fri, 24 Aug 2012 08:35:07 GMT</pubDate></item><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 08:37:30 GMT]]></title><description><![CDATA[<p>multi_index_container&lt;foo, indexed_by&lt;sequenced&lt;&gt;, ordered_unique&lt;identity&lt;foo&gt;&gt;&gt;&gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245071</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 24 Aug 2012 08:37:30 GMT</pubDate></item><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 09:18:00 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>Mein Vorschlag:<br />
<code>std::set</code> mit einem Compare-Funktor der einfach immer true zurück gibt. Der Witz ist jetzt, das als letztes eingefügte Element ist an Stelle eins ( <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> die Reihenfolge ist verkehrt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> ):</p>
</blockquote>
<p>Denk da nochmal drüber nach.</p>
<p>Was passiert wenn ich 1,2,3,1,2,3,1,2,3 einfüge?</p>
</blockquote>
<p>Shit... <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="😃"
    /><br />
Ich versuch mal was anderes.</p>
<p>Edit: Camper ist wieder der King... auf Boost.MultiIndex wär' ich nich' gekommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245076</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Fri, 24 Aug 2012 09:18:00 GMT</pubDate></item><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 09:35:26 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Edit: Camper ist wieder der King... auf Boost.MultiIndex wär' ich nich' gekommen.</p>
</blockquote>
<p>Davon bin ich noch nicht überzeugt. Du darfst aber gerne ein paar Messungen vornehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245086</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Fri, 24 Aug 2012 09:35:26 GMT</pubDate></item><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 09:45:51 GMT]]></title><description><![CDATA[<p>Was haltet ihr davon?</p>
<pre><code class="language-cpp">#include &lt;algorithm&gt;

template&lt;typename Container&gt;
Container&amp; unique(Container&amp; v)
{
        typename Container::iterator iter = v.begin();

        while(++iter != v.end())
                if(std::find(v.begin(), iter, *iter) != iter)
                        iter = --v.erase(iter);

        return v;
}
</code></pre>
<p>Kann man ja drüber laufen lassen, bevor man damit arbeitet.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/20068">@Michael</a>: Muss ich das machen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245096</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Fri, 24 Aug 2012 09:45:51 GMT</pubDate></item><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 09:56:59 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Was haltet ihr davon?</p>
</blockquote>
<p>Unnütz und ineffizient</p>
<blockquote>
<p>Kann man ja drüber laufen lassen, bevor man damit arbeitet.</p>
</blockquote>
<p>Und wenn man es vergisst? Was nützt mir ein Container, den ich Babysitten muss?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245104</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 24 Aug 2012 09:56:59 GMT</pubDate></item><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 09:58:57 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<blockquote>
<p>Kann man ja drüber laufen lassen, bevor man damit arbeitet.</p>
</blockquote>
<p>Und wenn man es vergisst? Was nützt mir ein Container, den ich Babysitten muss?</p>
</blockquote>
<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Dann würde ich einfach einen vector nehmen und per find/find_if vorher prüfen ob der Filter schon vorhanden ist.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2245106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245106</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Fri, 24 Aug 2012 09:58:57 GMT</pubDate></item><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 10:37:19 GMT]]></title><description><![CDATA[<p>Dir ist schon klar dass man diesen vector mit den find vor dem insert wrappen kann?</p>
<p>Es gibt btw std::unique...</p>
<p>Egal was man macht, der beste Ansatz ist idR sich beim einfügen dranzuhängen. Damit ist der Container immer in einem korrekten Zustand.</p>
<p>Und man kapselt funktionalität. Damit kann man die Implementierung ändern, wenn es notwendig wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245129</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 24 Aug 2012 10:37:19 GMT</pubDate></item><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 11:04:47 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Es gibt btw std::unique...</p>
</blockquote>
<p>Macht btw nicht das was meins tut...</p>
<p>Aber gut! Wenn du meinst dass das die beste Lösung ist, wirds so sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245140</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Fri, 24 Aug 2012 11:04:47 GMT</pubDate></item><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 11:15:14 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Es gibt btw std::unique...</p>
</blockquote>
<p>Macht btw nicht das was meins tut...</p>
</blockquote>
<p>Naja... Schon irgendwie, auch wenn Details unterschiedlich sind.<br />
Ein inplace erase ist idR aber keine gute Idee.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245142</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 24 Aug 2012 11:15:14 GMT</pubDate></item><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 13:36:36 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Dir ist schon klar dass man diesen vector mit den find vor dem insert wrappen kann?</p>
</blockquote>
<p>Und das kann man mit meiner Version nicht? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2245206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245206</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Fri, 24 Aug 2012 13:36:36 GMT</pubDate></item><item><title><![CDATA[Reply to Welchen Container? on Fri, 24 Aug 2012 14:38:09 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Dir ist schon klar dass man diesen vector mit den find vor dem insert wrappen kann?</p>
</blockquote>
<p>Und das kann man mit meiner Version nicht? <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>Dein Unique muss explizit aufgerufen werden. Das ist das Problem an der Sache - SeppJ hat das &quot;Babysitten des Containers&quot; genannt. Egal wie du es implementierst - ein Container den ich explizit in den korrekten Zustand bringen muss ist meh.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2245220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2245220</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 24 Aug 2012 14:38:09 GMT</pubDate></item></channel></rss>