<?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[Anfängerfrage: Über Teilmenge von Indeces iterieren]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe einen sortierten Vektor (vector&lt;int&gt;) mit dem Inhalt sagen wir mal:</p>
<p>meinVektor[0] = 0;<br />
meinVektor[1] = 1;<br />
meinVektor[<strong>2</strong>] = <strong>2</strong>;<br />
meinVektor[<strong>3</strong>] = <strong>2</strong>;<br />
meinVektor[<strong>4</strong>] = <strong>2</strong>;<br />
meinVektor[5] = 3;<br />
meinVektor[6] = 4;</p>
<p>Nun soll mir eine Suchfunktion alle Indeces zurückliefern mit dem zugehörigen Wert z.B. 2. In diesem Fall also 2 bis 4. Ich nehme mal an, das macht man mit Iteratoren...</p>
<p>Also Pseudocodemässig sowas:</p>
<pre><code class="language-cpp">vector&lt;int&gt;::iterator sucheInVector(vector&lt;int&gt; vec, int value) {
  // Hier kommt Suchalgorithmus
  // ...
  // Dieser liefert dann die zwei Zahlen zurück:
  int lowIndex = 2;
  int hiIndex = 4;

  return IteratorKreierenMit(lowIndex, hiIndex);  // &lt;- Was kommt hier?
}
</code></pre>
<p>Durch was muss ich im Pseudocode IteratorKreierenMit ersetzen, damit ich einen Iterator zurückgeben kann, der von lowIndex bis hiIndex iteriert?</p>
<p>Oder wie macht man das?</p>
<p>//Edit: Ich habe bereits gesucht, finde leider nur Beispiele, wo über den ganzen Vektor iteriert wird... Irgendwie werde ich daraus nicht schlau.</p>
<p>//Edit2: Im Prinzip könnte ich einfach ein Struct zurückgeben, wo hiIndex und loIndex drin gespeichert ist, aber ich möchte es jetzt mal mit Iteratoren versuchen...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/128633/anfängerfrage-über-teilmenge-von-indeces-iterieren</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 20:14:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/128633.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 05 Dec 2005 18:07:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anfängerfrage: Über Teilmenge von Indeces iterieren on Mon, 05 Dec 2005 18:13:37 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe einen sortierten Vektor (vector&lt;int&gt;) mit dem Inhalt sagen wir mal:</p>
<p>meinVektor[0] = 0;<br />
meinVektor[1] = 1;<br />
meinVektor[<strong>2</strong>] = <strong>2</strong>;<br />
meinVektor[<strong>3</strong>] = <strong>2</strong>;<br />
meinVektor[<strong>4</strong>] = <strong>2</strong>;<br />
meinVektor[5] = 3;<br />
meinVektor[6] = 4;</p>
<p>Nun soll mir eine Suchfunktion alle Indeces zurückliefern mit dem zugehörigen Wert z.B. 2. In diesem Fall also 2 bis 4. Ich nehme mal an, das macht man mit Iteratoren...</p>
<p>Also Pseudocodemässig sowas:</p>
<pre><code class="language-cpp">vector&lt;int&gt;::iterator sucheInVector(vector&lt;int&gt; vec, int value) {
  // Hier kommt Suchalgorithmus
  // ...
  // Dieser liefert dann die zwei Zahlen zurück:
  int lowIndex = 2;
  int hiIndex = 4;

  return IteratorKreierenMit(lowIndex, hiIndex);  // &lt;- Was kommt hier?
}
</code></pre>
<p>Durch was muss ich im Pseudocode IteratorKreierenMit ersetzen, damit ich einen Iterator zurückgeben kann, der von lowIndex bis hiIndex iteriert?</p>
<p>Oder wie macht man das?</p>
<p>//Edit: Ich habe bereits gesucht, finde leider nur Beispiele, wo über den ganzen Vektor iteriert wird... Irgendwie werde ich daraus nicht schlau.</p>
<p>//Edit2: Im Prinzip könnte ich einfach ein Struct zurückgeben, wo hiIndex und loIndex drin gespeichert ist, aber ich möchte es jetzt mal mit Iteratoren versuchen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/935224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/935224</guid><dc:creator><![CDATA[seeplusplus]]></dc:creator><pubDate>Mon, 05 Dec 2005 18:13:37 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage: Über Teilmenge von Indeces iterieren on Mon, 05 Dec 2005 18:18:10 GMT]]></title><description><![CDATA[<p>Also ich würde einfach ein Iterator-Pair zurückgeben:</p>
<pre><code class="language-cpp">return make_pair (find (vec.begin (), vec.end ()), find (vec.rbegin (), vec.rend ()).base () );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/935232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/935232</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Mon, 05 Dec 2005 18:18:10 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage: Über Teilmenge von Indeces iterieren on Mon, 05 Dec 2005 18:25:10 GMT]]></title><description><![CDATA[<p>Vielen Dank für die Antwort. Also es muss eine Lösung mit den loIndex und hiIndex sein. Denn die Suche macht eine binäre Suche und ich verwende nicht die internen Funktionen find().<br />
Sowas vielleicht? Ist das sauber?</p>
<pre><code class="language-cpp">return make_pair(vec.begin()+lowIndex, vec.begin()+hiIndex);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/935237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/935237</guid><dc:creator><![CDATA[seeplusplus]]></dc:creator><pubDate>Mon, 05 Dec 2005 18:25:10 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage: Über Teilmenge von Indeces iterieren on Mon, 05 Dec 2005 19:28:26 GMT]]></title><description><![CDATA[<p>Eigentlich schon, aber warum verwendest du nicht einfach für deinen Suchalgorithmus Iteratoren? Desweiteren bin ich mir ziemlich sicher, dass das mit der STL-find Funktion (oder einer eigenen find Funktion) am &quot;schönsten&quot; ist, schließlich ist es dann ein Einzeiler!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/935286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/935286</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Mon, 05 Dec 2005 19:28:26 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage: Über Teilmenge von Indeces iterieren on Mon, 05 Dec 2005 22:04:37 GMT]]></title><description><![CDATA[<p>Weil was ich brauche ist ein MultiMap in einem Vektor mit Suchzeit Log(n)! Ich habe so viele Einträge bis der Speicher voll ist, deswegen wäre eine Linked List o.ä. sehr verschwenderisch. Deswegen kommt alles in einen Vektor und dann wird am Schluss einmal sortiert, und gut ist...<br />
Es geht mir aber auch darum, die Sprache besser kennen zu lernen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/935416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/935416</guid><dc:creator><![CDATA[seeplusplus]]></dc:creator><pubDate>Mon, 05 Dec 2005 22:04:37 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage: Über Teilmenge von Indeces iterieren on Tue, 06 Dec 2005 07:26:06 GMT]]></title><description><![CDATA[<p>seeplusplus schrieb:</p>
<blockquote>
<p>Weil was ich brauche ist ein MultiMap in einem Vektor mit Suchzeit Log(n)!</p>
</blockquote>
<p>Wenn du eine MultiMap brauchst, nimm doch eine:</p>
<pre><code class="language-cpp">#include &lt;map&gt;
std::multimap&lt;int,int&gt; daten;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/935464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/935464</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 06 Dec 2005 07:26:06 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage: Über Teilmenge von Indeces iterieren on Tue, 06 Dec 2005 08:53:48 GMT]]></title><description><![CDATA[<p>Siehe letzten Beitrag. Die Daten müssen im Speicher aneinandergereiht sein (minimaler Speichergebrauch); sortiert soll erst am Schluss werden und die Suchzeit muss O(log(n)) sein. Ich glaube die std::MultiMap hat diese Eigenschaften nicht.</p>
<p>Wieviel effektiver Speicher wird bei einem std::MultiMap&lt;DWORD,DWORD&gt; benötigt, pro Eintrag? Ich nehme an mehr als 8, oder täusche ich mich da?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/935512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/935512</guid><dc:creator><![CDATA[seeplusplus]]></dc:creator><pubDate>Tue, 06 Dec 2005 08:53:48 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage: Über Teilmenge von Indeces iterieren on Tue, 06 Dec 2005 09:54:04 GMT]]></title><description><![CDATA[<p>Bin ich mir auch nicht sicher, dürfte etwa 8..12 für die Verpointerung plus die eigentlichen Daten sein.</p>
<p>Aber wenn du wirklich Vektoren brauchst, dann nimm wenigstens die STL-Algorithmen - guter Ansatz wäre z.B. sort() (wie der Name schon sagt, zum Sortieren) und equal_range() (liefert dir einen Iterator-Bereich mit identischem Suchschlüssel).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/935549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/935549</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 06 Dec 2005 09:54:04 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage: Über Teilmenge von Indeces iterieren on Tue, 06 Dec 2005 11:03:58 GMT]]></title><description><![CDATA[<p>seeplusplus schrieb:</p>
<blockquote>
<p>Ich habe bereits gesucht, finde leider nur Beispiele, wo über den ganzen Vektor iteriert wird... Irgendwie werde ich daraus nicht schlau.</p>
</blockquote>
<p>Die STL-Algorithmen, die Iteratoren verwenden, bekommen gewöhnlich einen Start-Iterator und einen End-Iterator und iterieren solange der aktuelle Iterator ungleich dem End-Iterator ist.<br />
Der Start-Iterator muss sich NICHT auf den Anfang des Containers beziehen, sondern auf die Position des Elements bei dem die Iteration beginnen soll.<br />
Der End-Iterator muss sich NICHT auf das Ende des Containers beziehen, sondern auf die Position hinter dem letzten Element über das iteriert werden soll.<br />
Hier ein einfaches Beispiel:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;iterator&gt;
#include &lt;vector&gt;
using namespace std;

int main()
{
	vector&lt;int&gt; test;
	int ersterIndex = 2;
	int letzterIndex = 4;

	for (int i=0; i&lt;10; ++i)
		test.push_back(i);

	copy(
		test.begin() + ersterIndex,
		test.begin() + letzterIndex + 1,
		ostream_iterator&lt;int&gt;(cout, &quot;\n&quot;));

    cin.get();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/935606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/935606</guid><dc:creator><![CDATA[Spezi L]]></dc:creator><pubDate>Tue, 06 Dec 2005 11:03:58 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage: Über Teilmenge von Indeces iterieren on Tue, 06 Dec 2005 12:52:44 GMT]]></title><description><![CDATA[<p>Okay, ich verwende jetzt std::sort(), sortierter Vektor, make_pair mit End-Iterator Index+1. Vielen Dank für die vielen Hinweise, wäre nicht selbst darauf gekommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/935688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/935688</guid><dc:creator><![CDATA[seeplusplus]]></dc:creator><pubDate>Tue, 06 Dec 2005 12:52:44 GMT</pubDate></item></channel></rss>