<?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[Vecor Iterator]]></title><description><![CDATA[<p>Hallo,</p>
<p>weis nicht wie ich innerhalb einer while Schleife über einen Vector, diesem Vector innerhalb dieser Schleife neue Elemente hinzufügen kann und den Vektor wieder neu sortieren kann s.u. Bitte um Verbesserungsvorschläge. Muss kein fertiger code sein, habe ja auch kein lauffähiges Bsp.</p>
<pre><code class="language-cpp">sort( events.begin(), events.end(), sortBOEvents);
...

while (!events.empty())
{
  //Vectorinhalt aufsteigend sortiert, brauche kleinstes Element
  currEv = events[0];

....

  //einige Prüfungen und wenn OK, neues event wird eingefügt
  events.push_back(intersP); &lt;-------- hier Problem
  // events neu sortieren, das bekommt die while Schleife nicht mit   
  //oder Vektor gar nicht sortieren und Methode schreiben, die das kleinste Element liefert?
  // oder ??

  events.erase(events.begin()); //auch falsch, möchte das currEv löschen und nach Neusortierung muss das nicht mehr das 1. Element in Vektor sein
}
</code></pre>
<p>schon mal Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/301136/vecor-iterator</link><generator>RSS for Node</generator><lastBuildDate>Wed, 12 Aug 2026 07:37:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/301136.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 20 Mar 2012 12:08:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vecor Iterator on Tue, 20 Mar 2012 12:08:19 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>weis nicht wie ich innerhalb einer while Schleife über einen Vector, diesem Vector innerhalb dieser Schleife neue Elemente hinzufügen kann und den Vektor wieder neu sortieren kann s.u. Bitte um Verbesserungsvorschläge. Muss kein fertiger code sein, habe ja auch kein lauffähiges Bsp.</p>
<pre><code class="language-cpp">sort( events.begin(), events.end(), sortBOEvents);
...

while (!events.empty())
{
  //Vectorinhalt aufsteigend sortiert, brauche kleinstes Element
  currEv = events[0];

....

  //einige Prüfungen und wenn OK, neues event wird eingefügt
  events.push_back(intersP); &lt;-------- hier Problem
  // events neu sortieren, das bekommt die while Schleife nicht mit   
  //oder Vektor gar nicht sortieren und Methode schreiben, die das kleinste Element liefert?
  // oder ??

  events.erase(events.begin()); //auch falsch, möchte das currEv löschen und nach Neusortierung muss das nicht mehr das 1. Element in Vektor sein
}
</code></pre>
<p>schon mal Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2193186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2193186</guid><dc:creator><![CDATA[*lt*---*gt*]]></dc:creator><pubDate>Tue, 20 Mar 2012 12:08:19 GMT</pubDate></item><item><title><![CDATA[Reply to Vecor Iterator on Tue, 20 Mar 2012 12:17:11 GMT]]></title><description><![CDATA[<p>Was möchtest du überhaupt erreichen? Klingt nämlich eher nach einem Fall für ein (multi-)set.</p>
<p>Auch kann ich dein Problem nicht nachvollziehen? Wieso sollte ein <code>while(!events.empty())</code> nicht auf Änderungen an events reagieren oder damit sonstwelche Schwierigkeiten haben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2193191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2193191</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 20 Mar 2012 12:17:11 GMT</pubDate></item><item><title><![CDATA[Reply to Vecor Iterator on Tue, 20 Mar 2012 12:21:33 GMT]]></title><description><![CDATA[<p>Ich möchte solange noch Elemente in dem Vektor sind, diesen durchlaufen. Initial ist der Vektor schon mit Werten gefüllt. Im Schleifendurchlauf kommen weitere Elemente hinzu. Diese sollen wieder sortiert werden.<br />
Falls das unklar ausgedrückt ist: Der Algorithmus soll ein Bentley Ottmann Algo werden, hier der Pseudocode<br />
X entspricht meinem Vektor events.</p>
<p>Initialize event queue x = all segment endpoints;<br />
Sort x by increasing x and y;<br />
Initialize sweep line SL to be empty;<br />
Initialize output intersection list L to be empty;</p>
<p>While (x is nonempty) {<br />
Let E = the next event from x;<br />
If (E is a left endpoint) {<br />
Let segE = E's segment;<br />
Add segE to SL;<br />
Let segA = the segment above segE in SL;<br />
Let segB = the segment below segE in SL;<br />
If (I = Intersect( segE with segA) exists)<br />
Insert I into x;<br />
If (I = Intersect( segE with segB) exists)<br />
Insert I into x;<br />
}<br />
Else If (E is a right endpoint) {<br />
Let segE = E's segment;<br />
Let segA = the segment above segE in SL;<br />
Let segB = the segment below segE in SL;<br />
Remove segE from SL;<br />
If (I = Intersect( segA with segB) exists)<br />
If (I is not in x already) Insert I into x;<br />
}<br />
Else { // E is an intersection event<br />
Add E to the output list L;<br />
Let segE1 above segE2 be E's intersecting segments in SL;<br />
Swap their positions so that segE2 is now above segE1;<br />
Let segA = the segment above segE2 in SL;<br />
Let segB = the segment below segE1 in SL;<br />
If (I = Intersect(segE2 with segA) exists)<br />
If (I is not in x already) Insert I into x;<br />
If (I = Intersect(segE1 with segB) exists)<br />
If (I is not in x already) Insert I into x;<br />
}<br />
remove E from x;<br />
}<br />
return L;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2193194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2193194</guid><dc:creator><![CDATA[*lt*---*gt*]]></dc:creator><pubDate>Tue, 20 Mar 2012 12:21:33 GMT</pubDate></item><item><title><![CDATA[Reply to Vecor Iterator on Tue, 20 Mar 2012 12:42:56 GMT]]></title><description><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Bentley%E2%80%93Ottmann_algorithm#Data_structures" rel="nofollow">http://en.wikipedia.org/wiki/Bentley–Ottmann_algorithm#Data_structures</a></p>
<p>Binäre Suchbäume und priority queues gibt es schon in der STL.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2193206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2193206</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 20 Mar 2012 12:42:56 GMT</pubDate></item><item><title><![CDATA[Reply to Vecor Iterator on Tue, 20 Mar 2012 12:50:42 GMT]]></title><description><![CDATA[<p>Danke, mal schaun wie weit ich komme..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2193209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2193209</guid><dc:creator><![CDATA[*lt*---*gt*]]></dc:creator><pubDate>Tue, 20 Mar 2012 12:50:42 GMT</pubDate></item></channel></rss>