<?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[Positionsbestimmung in einer std::map]]></title><description><![CDATA[<p>Ich habe folgenden Code der die Position einer Id bestimmt.</p>
<pre><code class="language-cpp">uint8_t GetPos(uint8_t id) const
{
	uint8_t i;
	const_it ci = db.begin();

	for(i=0;ci!=db.end();ci++,i++)
	{
		if(ci-&gt;first == id)
		{
			return i;
		}
	}

	assert(false);
	return 0;
}
</code></pre>
<p>Ich weiß dass eine map so etwas eigentlich nicht vorsieht.. dennoch wäre ich für Ideen dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284858/positionsbestimmung-in-einer-std-map</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 20:00:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284858.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 09 Apr 2011 19:48:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Positionsbestimmung in einer std::map on Sat, 09 Apr 2011 19:48:59 GMT]]></title><description><![CDATA[<p>Ich habe folgenden Code der die Position einer Id bestimmt.</p>
<pre><code class="language-cpp">uint8_t GetPos(uint8_t id) const
{
	uint8_t i;
	const_it ci = db.begin();

	for(i=0;ci!=db.end();ci++,i++)
	{
		if(ci-&gt;first == id)
		{
			return i;
		}
	}

	assert(false);
	return 0;
}
</code></pre>
<p>Ich weiß dass eine map so etwas eigentlich nicht vorsieht.. dennoch wäre ich für Ideen dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046904</guid><dc:creator><![CDATA[blub01]]></dc:creator><pubDate>Sat, 09 Apr 2011 19:48:59 GMT</pubDate></item><item><title><![CDATA[Reply to Positionsbestimmung in einer std::map on Sat, 09 Apr 2011 19:53:30 GMT]]></title><description><![CDATA[<p>Erstens: Wo genau ist dein Problem?</p>
<p>Zweitens: Welchen Zweck hat dieser Code? In einer map&lt;&gt; ist es einfacher direkt mit den Iteratoren zu arbeiten, anstatt mit Indizes. (Erstens kann sich diese Position beim nächsten insert() oder erase() schon ändern und zweitens brauchst du O(n) Zeit, um mit diesem Index wieder dein map-Element zu finden)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046908</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 09 Apr 2011 19:53:30 GMT</pubDate></item><item><title><![CDATA[Reply to Positionsbestimmung in einer std::map on Sat, 09 Apr 2011 19:59:06 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Erstens: Wo genau ist dein Problem?</p>
</blockquote>
<p>Dieser Code ist ein Erstentwurf weil mir gerade nichts besseres einfiel.</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>Zweitens: Welchen Zweck hat dieser Code?</p>
</blockquote>
<p>Es gibt eine map&lt;int,Klasse&gt; sie speichert Topologiedaten. An einer Stelle wird die allgemeine Position benötigt in der mir der Iterator nichts bringt.</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>In einer map&lt;&gt; ist es einfacher direkt mit den Iteratoren zu arbeiten, anstatt mit Indizes.</p>
</blockquote>
<p>Der bringt mir leider nichts.</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>(Erstens kann sich diese Position beim nächsten insert() oder erase() schon ändern</p>
</blockquote>
<p>Das ist unkritisch.</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>und zweitens brauchst du O(n) Zeit, um mit diesem Index wieder dein map-Element zu finden)</p>
</blockquote>
<p>Deswegen frage ich ob jemandem etwas intelligenteres einfällt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046913</guid><dc:creator><![CDATA[blub01]]></dc:creator><pubDate>Sat, 09 Apr 2011 19:59:06 GMT</pubDate></item><item><title><![CDATA[Reply to Positionsbestimmung in einer std::map on Sat, 09 Apr 2011 20:04:40 GMT]]></title><description><![CDATA[<p>Was willst du machen, was du mit dem Iterator nicht erreichen kannst? Wenn sich das wirklich nur auf eine Stelle bezieht, kannst du ja auch an der betroffenen Stelle die Position umrechnen per <code>std::difference(db.begin(),pos)</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046917</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 09 Apr 2011 20:04:40 GMT</pubDate></item><item><title><![CDATA[Reply to Positionsbestimmung in einer std::map on Sat, 09 Apr 2011 20:20:29 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Was willst du machen, was du mit dem Iterator nicht erreichen kannst? Wenn sich das wirklich nur auf eine Stelle bezieht, kannst du ja auch an der betroffenen Stelle die Position umrechnen per <code>std::difference(db.begin(),pos)</code> .</p>
</blockquote>
<p>Danke für die Idee. std::difference gibt es bei mir irgendwie nicht (VS2010) aber std::distance scheint gut zu funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046923</guid><dc:creator><![CDATA[blub01]]></dc:creator><pubDate>Sat, 09 Apr 2011 20:20:29 GMT</pubDate></item><item><title><![CDATA[Reply to Positionsbestimmung in einer std::map on Sat, 09 Apr 2011 20:25:28 GMT]]></title><description><![CDATA[<p>blub01 schrieb:</p>
<blockquote>
<p>Danke für die Idee. std::difference gibt es bei mir irgendwie nicht (VS2010) aber std::distance scheint gut zu funktionieren.</p>
</blockquote>
<p>das könnte an der Uhrzeit liegen <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="😃"
    /> schön, daß du es trotzdem gefunden hast</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046926</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 09 Apr 2011 20:25:28 GMT</pubDate></item></channel></rss>