<?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[Synchronisation zwischen verschiedenen Containern &#x2F; Map Keys]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte eine lange Anzahl von Elementen einer Struktur indizieren ... und zwar nach verschiedenen Kriterien. Zum Beispiel einmal anhand eines Names, einmal Anhang einer Art (enum). Der Hintergrund bei diesen Aktionen ist es Listen bestimmten Typs erstellen zu können und dies wird von einer Klasse gehalten, die diese Zugriffe nach außen abstrahiert und dazu sind die gleichen Objekte in verschiedenen Containern (idr. std::multimap und std::map mit verschiedenen Keys) gespeichert.</p>
<p>Während die Zugriffe dadurch sehr komfortabel sind, wird es zum Problem Elemente aus dem Datenset zu entfernen. Während ich in einigen Containern sofort das zu finde Element indexieren kann, sind insbesondere die Container problematisch, die einem in erster Linie Listen für bestimmte Elementen-Keys zu Verfügung stellen. Dazu muß die ganze Sublisten durchsucht werden, bis das fragliche Element gefunden wurde und gelöscht werden kann. Und dies muß für jeden Datensatz, über den indiziert von außen zugegriffen werden kann erfolgen.</p>
<p>Ich frage mich, ob es für das Problem eine gute Lösung/Muster gibt, wie man die Daten so organisiert, daß ich diesen Aufwand nicht habe. Zum Beispiel ob es eine Möglichkeit gibt auf Basis eines Objekts, daß man über einen Iterator gefunden hat, auch die Iteratoren für das gleiche Objekt in anderen Containern direkt zu ermitteln. Oder eben einfach eine erweiterte Datenstruktur, die gegenüber der multimap die indizierung nach mehreren &quot;Key Values&quot; erlaubt.</p>
<p>Gibt es da Möglichken? Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/255055/synchronisation-zwischen-verschiedenen-containern-map-keys</link><generator>RSS for Node</generator><lastBuildDate>Sat, 12 Sep 2026 06:59:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/255055.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 25 Nov 2009 09:29:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Synchronisation zwischen verschiedenen Containern &#x2F; Map Keys on Wed, 25 Nov 2009 09:29:12 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte eine lange Anzahl von Elementen einer Struktur indizieren ... und zwar nach verschiedenen Kriterien. Zum Beispiel einmal anhand eines Names, einmal Anhang einer Art (enum). Der Hintergrund bei diesen Aktionen ist es Listen bestimmten Typs erstellen zu können und dies wird von einer Klasse gehalten, die diese Zugriffe nach außen abstrahiert und dazu sind die gleichen Objekte in verschiedenen Containern (idr. std::multimap und std::map mit verschiedenen Keys) gespeichert.</p>
<p>Während die Zugriffe dadurch sehr komfortabel sind, wird es zum Problem Elemente aus dem Datenset zu entfernen. Während ich in einigen Containern sofort das zu finde Element indexieren kann, sind insbesondere die Container problematisch, die einem in erster Linie Listen für bestimmte Elementen-Keys zu Verfügung stellen. Dazu muß die ganze Sublisten durchsucht werden, bis das fragliche Element gefunden wurde und gelöscht werden kann. Und dies muß für jeden Datensatz, über den indiziert von außen zugegriffen werden kann erfolgen.</p>
<p>Ich frage mich, ob es für das Problem eine gute Lösung/Muster gibt, wie man die Daten so organisiert, daß ich diesen Aufwand nicht habe. Zum Beispiel ob es eine Möglichkeit gibt auf Basis eines Objekts, daß man über einen Iterator gefunden hat, auch die Iteratoren für das gleiche Objekt in anderen Containern direkt zu ermitteln. Oder eben einfach eine erweiterte Datenstruktur, die gegenüber der multimap die indizierung nach mehreren &quot;Key Values&quot; erlaubt.</p>
<p>Gibt es da Möglichken? Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1813197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1813197</guid><dc:creator><![CDATA[GmbH]]></dc:creator><pubDate>Wed, 25 Nov 2009 09:29:12 GMT</pubDate></item><item><title><![CDATA[Reply to Synchronisation zwischen verschiedenen Containern &#x2F; Map Keys on Wed, 25 Nov 2009 14:52:18 GMT]]></title><description><![CDATA[<p>z.B. boost::multi_index_container: <a href="http://www.boost.org/doc/libs/1_41_0/libs/multi_index/doc/index.html" rel="nofollow">http://www.boost.org/doc/libs/1_41_0/libs/multi_index/doc/index.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1813371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1813371</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Wed, 25 Nov 2009 14:52:18 GMT</pubDate></item><item><title><![CDATA[Reply to Synchronisation zwischen verschiedenen Containern &#x2F; Map Keys on Wed, 25 Nov 2009 15:40:50 GMT]]></title><description><![CDATA[<p>Es klingt nach einer komplexeren Datenhaltung. Daher solltest du mal überlegen, ob an dieser Stelle eine Datenbank sinnvoll wäre. Man kann zwar mit verschiedenen Container eine eigene Datenhaltung nach belieben erstellen, aber wozu etwas neu bauen, wenn man es mit bestehenden Mitteln einfach und sinnvoll umsetzen kann.</p>
<p>Und es muss ja nicht immer gleich eine MySQL-Datenbank o.Ä. sein. Eine Embedded Datenbank wie SQLite ist sehr überschaubar und hilfreich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1813396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1813396</guid><dc:creator><![CDATA[DarkGuardian]]></dc:creator><pubDate>Wed, 25 Nov 2009 15:40:50 GMT</pubDate></item></channel></rss>