<?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[random_shuffle an einem struct?]]></title><description><![CDATA[<p>hallo,</p>
<p>wie kann man die STL-funktion random_shuffle an einem struct durchführen?</p>
<p>das struct sieht so aus:</p>
<pre><code>struct Solution {
       int Customer_ID;
       double tourLength;
     };
</code></pre>
<p>ich würde gerne die Customer_ID durchmischen.<br />
wisst ihr wie es gehen könnte?</p>
<p>lg,<br />
Don_Gunito</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/230515/random_shuffle-an-einem-struct</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 07:59:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/230515.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 27 Dec 2008 22:59:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to random_shuffle an einem struct? on Sat, 27 Dec 2008 22:59:42 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>wie kann man die STL-funktion random_shuffle an einem struct durchführen?</p>
<p>das struct sieht so aus:</p>
<pre><code>struct Solution {
       int Customer_ID;
       double tourLength;
     };
</code></pre>
<p>ich würde gerne die Customer_ID durchmischen.<br />
wisst ihr wie es gehen könnte?</p>
<p>lg,<br />
Don_Gunito</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1636353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1636353</guid><dc:creator><![CDATA[Don_Gunito]]></dc:creator><pubDate>Sat, 27 Dec 2008 22:59:42 GMT</pubDate></item><item><title><![CDATA[Reply to random_shuffle an einem struct? on Sat, 27 Dec 2008 23:20:06 GMT]]></title><description><![CDATA[<p>Du solltest dich genauer ausdrücken.</p>
<p>Normalerweise wendet man die <code>std::random_shuffle()</code> auf Container an, du hast aber nichts dergleichen gesagt.</p>
<p>Hast du einen Container mit <code>Solution</code> -Einträgen, und unter diesen Einträgen willst du die <code>Customer_ID</code> -Member zufällig vertauschen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1636359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1636359</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 27 Dec 2008 23:20:06 GMT</pubDate></item><item><title><![CDATA[Reply to random_shuffle an einem struct? on Sun, 28 Dec 2008 00:06:26 GMT]]></title><description><![CDATA[<p>hallo nexus,</p>
<p>danke für den input, ich habe mehrere instanzen eines structs (s.o.) in einen vector gepackt</p>
<pre><code>vector&lt;Customer&gt; customer;
</code></pre>
<p>und nun will ich die Customer_ID durchmischen.</p>
<blockquote>
<p>Hast du einen Container mit Solution-Einträgen, und unter diesen Einträgen willst du die Customer_ID-Member zufällig vertauschen?</p>
</blockquote>
<p>ich denke genau das hab ich gemacht...</p>
<p>besten dank für deine hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1636366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1636366</guid><dc:creator><![CDATA[Don_Gunito]]></dc:creator><pubDate>Sun, 28 Dec 2008 00:06:26 GMT</pubDate></item><item><title><![CDATA[Reply to random_shuffle an einem struct? on Sun, 28 Dec 2008 00:47:46 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>also ich kann mir gerade nicht vorstellen, wo Dein Problem liegt. die Container-Algorithmen laufen auf einem vector&lt;int&gt; genauso wie auf einem vector&lt;mein_ganz_persoenliches_wildes_spezial_struct&gt;....</p>
<p>Oder möchtest Du <em>die beinhalteten Objekte selbst</em> verändern (also nicht nur ihre Reihenfolge im Container) ?</p>
<p>Hast Du sowas in der Art:</p>
<pre><code>[1, 1.2]      [2, 1.2]
[2, 2.3]  --&gt; [1, 3.4]
[3, 3.4]      [3, 2.3]
</code></pre>
<p>vor?<br />
Dafür wäre random_shuffle() nicht gedacht. Oder Du müsstest erst Deinen vector &quot;teilen&quot;, mischen und hinterher wieder neu zusammensetzen.<br />
Sowas in der Art (ungetestet)</p>
<pre><code class="language-cpp">int IDSelector(Solution const&amp; s) { return s.customerID; }
int tourLengthSelector(Solution const&amp; s) { return s.tourLength; }

vector&lt;Solution&gt; solutions; // irgendwie füllen

vector&lt;int&gt; customerIDs;
vector&lt;double&gt; tourLengths;
transform(solutions.begin(), solutions.end(), back_inserter(customerIDs), IDSelector);
transform(solutions.begin(), solutions.end(), back_inserter(tourLengths), tourLengthSelector);
random_shuffle(customerIDs.begin(), customerIDs.end());
// ob man das auch für die tourLengths braucht, ist aufgabenspezifisch

vector&lt;Solution&gt; newSolutions(customerIDs.size());
for(size_t i=0; i&lt;customerIDs.size(); ++i) newSolutions[i] = Solution(customerIDs[i], tourLengths[i]); // geeigneten Ctor mal vorausgesetzt
</code></pre>
<p>Geht bestimmt auch besser - aber mal als Ideenskizze...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1636374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1636374</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sun, 28 Dec 2008 00:47:46 GMT</pubDate></item><item><title><![CDATA[Reply to random_shuffle an einem struct? on Sun, 28 Dec 2008 23:17:49 GMT]]></title><description><![CDATA[<p>hallo nochmals,</p>
<p>also, was ich wirklich will ist die reihenfolge der structs im vector durchmischen.</p>
<p>so hätte ich es gern:</p>
<pre><code>[1, 1.2]      [2, 2.3]
[2, 2.3]  --&gt; [1, 1.2]
[3, 3.4]      [3, 3.4]
</code></pre>
<p>mit</p>
<pre><code>random_shuffle(customer.begin(), customer.end());
</code></pre>
<p>geht das.</p>
<p>besten dank leute!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1636681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1636681</guid><dc:creator><![CDATA[Don_Gunito]]></dc:creator><pubDate>Sun, 28 Dec 2008 23:17:49 GMT</pubDate></item><item><title><![CDATA[Reply to random_shuffle an einem struct? on Mon, 29 Dec 2008 00:23:30 GMT]]></title><description><![CDATA[<p>Don_Gunito schrieb:</p>
<blockquote>
<p>also, was ich wirklich will ist die reihenfolge der structs im vector durchmischen.</p>
<p>so hätte ich es gern:</p>
<pre><code>[1, 1.2]      [2, 2.3]
[2, 2.3]  --&gt; [1, 1.2]
[3, 3.4]      [3, 3.4]
</code></pre>
</blockquote>
<p>Das wiederspricht sich aber schon ein wenig - aber ich nehm mal an, du hast die skizze missverstanden?!</p>
<pre><code class="language-cpp">struct Solution {
       int Customer_ID; //erster wert
       double tourLength; //zweiter wert
     };
</code></pre>
<p>also lt. skizze wölltest du die customer-ids zufällig tauschen?! da du das aber offenbar nicht willst reicht ein einfacher <code>random_shuffle</code> -Aufruf, wie du ihn auch geschrieben hast, aus.</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1636694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1636694</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 29 Dec 2008 00:23:30 GMT</pubDate></item></channel></rss>