<?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[Map mit zwei Keys und Joker]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich benötige folgende Struktur:</p>
<p>ID1 | ID2 | Object<br />
1 A O1<br />
1 B O2<br />
1 E O3<br />
2 B O4<br />
3 B O5<br />
4 A O6<br />
4 E O7</p>
<p>Das könnte man ja mit einer std::map und std::pair hinbekommen. Nun mein Problem. Ich möchte alle Objekte mit ID1 bzw. ID2 seperat abfragen können.</p>
<p>Beispiel:</p>
<p>ID1==1 soll ausgeben O1,O2,O3<br />
ID2== A soll ausgeben O1,O6</p>
<p>Ich hoffe ihr versteht, wie ich das meine. Wie kann ich das umsetzen? Am besten mit std-Mitteln.</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/329067/map-mit-zwei-keys-und-joker</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 05:06:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/329067.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 06 Nov 2014 10:26:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Map mit zwei Keys und Joker on Thu, 06 Nov 2014 10:26:14 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich benötige folgende Struktur:</p>
<p>ID1 | ID2 | Object<br />
1 A O1<br />
1 B O2<br />
1 E O3<br />
2 B O4<br />
3 B O5<br />
4 A O6<br />
4 E O7</p>
<p>Das könnte man ja mit einer std::map und std::pair hinbekommen. Nun mein Problem. Ich möchte alle Objekte mit ID1 bzw. ID2 seperat abfragen können.</p>
<p>Beispiel:</p>
<p>ID1==1 soll ausgeben O1,O2,O3<br />
ID2== A soll ausgeben O1,O6</p>
<p>Ich hoffe ihr versteht, wie ich das meine. Wie kann ich das umsetzen? Am besten mit std-Mitteln.</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426138</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426138</guid><dc:creator><![CDATA[Johnny123]]></dc:creator><pubDate>Thu, 06 Nov 2014 10:26:14 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit zwei Keys und Joker on Thu, 06 Nov 2014 10:52:19 GMT]]></title><description><![CDATA[<p>Mach es einfach selbst. Schleife drüber, argument ist 1 ?: vektor anlegen; if(id == ...) { gefunden.push_back(); } return gefunden;</p>
<p>das ist doch prunzeinfach.</p>
<p>und pair/map-Zeug würd ich mir schon aus Hässlichkeit sparen und (wenn möglich) einfach ein struct { id1; id2; object; } bauen, das in einen std vektor kommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426144</guid><dc:creator><![CDATA[randa]]></dc:creator><pubDate>Thu, 06 Nov 2014 10:52:19 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit zwei Keys und Joker on Thu, 06 Nov 2014 11:46:46 GMT]]></title><description><![CDATA[<p>Aber sind dann Operationen wie das finden bzw. löschen nicht langsamer als bei einer Map?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426153</guid><dc:creator><![CDATA[Johnny123]]></dc:creator><pubDate>Thu, 06 Nov 2014 11:46:46 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit zwei Keys und Joker on Thu, 06 Nov 2014 11:48:11 GMT]]></title><description><![CDATA[<p>Johnny123 schrieb:</p>
<blockquote>
<p>Aber sind dann Operationen wie das finden bzw. löschen nicht langsamer als bei einer Map?</p>
</blockquote>
<p>Von wie vielen Elementen sprechen wir hier?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426154</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Thu, 06 Nov 2014 11:48:11 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit zwei Keys und Joker on Thu, 06 Nov 2014 11:52:32 GMT]]></title><description><![CDATA[<p>10k-100k würde ich sagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426155</guid><dc:creator><![CDATA[Johnny123]]></dc:creator><pubDate>Thu, 06 Nov 2014 11:52:32 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit zwei Keys und Joker on Thu, 06 Nov 2014 11:54:05 GMT]]></title><description><![CDATA[<p>10k-100k würde ich sagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426157</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426157</guid><dc:creator><![CDATA[Johnny123]]></dc:creator><pubDate>Thu, 06 Nov 2014 11:54:05 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit zwei Keys und Joker on Thu, 06 Nov 2014 12:16:59 GMT]]></title><description><![CDATA[<p>Du könntest mal den Boost Container <a href="http://www.boost.org/doc/libs/1_55_0b1/libs/multi_index/doc/index.html" rel="nofollow">MultiIndex</a> ausprobieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426160</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Thu, 06 Nov 2014 12:16:59 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit zwei Keys und Joker on Thu, 06 Nov 2014 12:21:20 GMT]]></title><description><![CDATA[<p>Th69 schrieb:</p>
<blockquote>
<p>Du könntest mal den Boost Container <a href="http://www.boost.org/doc/libs/1_55_0b1/libs/multi_index/doc/index.html" rel="nofollow">MultiIndex</a> ausprobieren.</p>
</blockquote>
<p>ja aber das hätter er auch auf stackoverflow finden können.</p>
<p>Ansonsten eigene Lösung mit einem Baum, oder einfach 100k if abfragen fressen, kann ja u.U. ok sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426161</guid><dc:creator><![CDATA[randa]]></dc:creator><pubDate>Thu, 06 Nov 2014 12:21:20 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit zwei Keys und Joker on Thu, 06 Nov 2014 12:23:12 GMT]]></title><description><![CDATA[<p>Du könntest die Objekte dynamisch erzeugen und zwei Container (für jede ID einen) mit IDs und Zeigern auf die Objekte vorhalten. Für die Verwaltung dieses Konstrukts eine Klasse schreiben, damit Speicherverwaltung und Zuordnung nicht schief gehen können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426162</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Thu, 06 Nov 2014 12:23:12 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit zwei Keys und Joker on Thu, 06 Nov 2014 12:48:50 GMT]]></title><description><![CDATA[<p>Willst du ID1 oder ID2 abfragen könne, oder auch beide in kombi?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426166</guid><dc:creator><![CDATA[NullBockException]]></dc:creator><pubDate>Thu, 06 Nov 2014 12:48:50 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit zwei Keys und Joker on Thu, 06 Nov 2014 13:29:11 GMT]]></title><description><![CDATA[<p>NullBockException schrieb:</p>
<blockquote>
<p>Willst du ID1 oder ID2 abfragen könne, oder auch beide in kombi?</p>
</blockquote>
<p>Also beim Suchen reicht eine. Zum Abfragen sollten schon beide gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2426171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426171</guid><dc:creator><![CDATA[Johnny123]]></dc:creator><pubDate>Thu, 06 Nov 2014 13:29:11 GMT</pubDate></item><item><title><![CDATA[Reply to Map mit zwei Keys und Joker on Thu, 06 Nov 2014 13:42:16 GMT]]></title><description><![CDATA[<p>Ich hab was gebastet:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;iterator&gt;
#include &lt;map&gt;
#include &lt;set&gt;
#include &lt;string&gt;
#include &lt;utility&gt;
using namespace std;

template&lt;typename Key_1, typename Key_2, typename T&gt;
class multikey_map
{
	private:
		set&lt;T&gt; values;
		typedef typename set&lt;T&gt;::iterator iterator;
		multimap&lt;pair&lt;Key_1,Key_2&gt;,iterator&gt; m;
		multimap&lt;Key_1,iterator&gt; m_key_1;
		multimap&lt;Key_2,iterator&gt; m_key_2;	
		typedef typename multimap&lt;pair&lt;Key_1,Key_2&gt;,iterator&gt;::iterator iterator_0;
		typedef typename multimap&lt;Key_1,iterator&gt;::iterator iterator_1;
		typedef typename multimap&lt;Key_2,iterator&gt;::iterator iterator_2;

	public:
		void insert( const Key_1&amp; k1, const Key_2&amp; k2, const T&amp; value )
		{
			const auto it = values.insert( value ).first;
			m.insert( make_pair(make_pair(k1,k2),it) );
			m_key_1.insert( make_pair(k1,it) );
			m_key_2.insert( make_pair(k2,it) );
		}

		pair&lt;iterator_1,iterator_1&gt; find( const Key_1&amp; key ) { return m_key_1.equal_range( key ); }
		pair&lt;iterator_2,iterator_2&gt; find( const Key_2&amp; key ) { return m_key_2.equal_range( key ); }

		iterator_0 begin() { return ::begin(m); }
		iterator_0 end()   { return ::end(m);   }
};

int main()
{
	multikey_map&lt;int,char,string&gt; m;

	m.insert( 1, 'A', &quot;O1&quot; );
	m.insert( 1, 'B', &quot;O2&quot; );
	m.insert( 1, 'E', &quot;O3&quot; );
	m.insert( 2, 'B', &quot;O4&quot; );
	m.insert( 3, 'B', &quot;O5&quot; );
	m.insert( 4, 'A', &quot;O6&quot; );
	m.insert( 4, 'E', &quot;O7&quot; );

	for(const auto&amp; elem : m)
	{
		auto key_1 = elem.first.first;
		auto key_2 = elem.first.second;
		auto value = *(elem.second);
		cout &lt;&lt; key_1 &lt;&lt; &quot; | &quot; &lt;&lt; key_2 &lt;&lt; &quot; = &quot; &lt;&lt; value &lt;&lt; '\n';
	}

	{
		auto range = m.find( 1 );
		for(auto it=range.first; it!=range.second; ++it)
		{
			cout &lt;&lt; it-&gt;first &lt;&lt; &quot; = &quot; &lt;&lt; *(it-&gt;second) &lt;&lt; '\n';
		}
	}

	{
		auto range = m.find( 'A' );
		for(auto it=range.first; it!=range.second; ++it)
		{
			cout &lt;&lt; it-&gt;first &lt;&lt; &quot; = &quot; &lt;&lt; *(it-&gt;second) &lt;&lt; '\n';
		}
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2426174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2426174</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Thu, 06 Nov 2014 13:42:16 GMT</pubDate></item></channel></rss>