<?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[Funktion für boost::ptr_unordered_multimap und boost::unordered_multimap]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine Art Suchfunktion mit bestimmten Ausschlusskriterien für eine multimap geschrieben.<br />
Nun stehe ich vor dem Problem, dass ich an einer Stelle einen Pointer Container übergebe und an der anderen einen normalen, der eine Teilmenge davon enthält.<br />
Der Code der Suchfunktion sieht in etwa so aus:</p>
<pre><code>Object* Parser::searchObjectInCustomList(const SpecificObjectList &amp;objectList, const std::string &amp;identifier, Parser::SearchMode searchMode, const Object *object)
{
	if (objectList.size() == 0)
		return 0;

	boost::iterator_range&lt;SpecificObjectList::iterator&gt; range = objectList.equal_range(identifier);

	if (range.empty())
		return 0;

	Object *resultObject = 0;
	bool checkContainer = false;
	bool checkScope = false;
	bool checkLibrary = false;

	if ((object != 0 &amp;&amp; object-&gt;container() != 0) || searchMode &amp; CheckContainer)
		checkContainer = true;

	if ((object != 0 &amp;&amp; object-&gt;scope() != 0) || searchMode &amp; CheckScope)
		checkScope = true;

	if ((object != 0 &amp;&amp; object-&gt;library() != 0) || searchMode &amp; checkLibrary)
		checkLibrary = true;
...

typedef boost::ptr_unordered_multimap&lt;std::string, Object&gt; ObjectList;
typedef boost::unordered_multimap&lt;std::string, Object*&gt; SpecificObjectList;
</code></pre>
<p>Ich möchte die Funktion praktisch auch auf ein Objekt des Typs ObjectList anwenden können. Kann ich irgendwie eine boost::ptr_unordered_multimap-Instanz effizient zu einer boost::unordered_multimap-Instanz umwandeln?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/300669/funktion-für-boost-ptr_unordered_multimap-und-boost-unordered_multimap</link><generator>RSS for Node</generator><lastBuildDate>Wed, 12 Aug 2026 16:11:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/300669.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Mar 2012 22:05:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktion für boost::ptr_unordered_multimap und boost::unordered_multimap on Wed, 07 Mar 2012 22:05:00 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine Art Suchfunktion mit bestimmten Ausschlusskriterien für eine multimap geschrieben.<br />
Nun stehe ich vor dem Problem, dass ich an einer Stelle einen Pointer Container übergebe und an der anderen einen normalen, der eine Teilmenge davon enthält.<br />
Der Code der Suchfunktion sieht in etwa so aus:</p>
<pre><code>Object* Parser::searchObjectInCustomList(const SpecificObjectList &amp;objectList, const std::string &amp;identifier, Parser::SearchMode searchMode, const Object *object)
{
	if (objectList.size() == 0)
		return 0;

	boost::iterator_range&lt;SpecificObjectList::iterator&gt; range = objectList.equal_range(identifier);

	if (range.empty())
		return 0;

	Object *resultObject = 0;
	bool checkContainer = false;
	bool checkScope = false;
	bool checkLibrary = false;

	if ((object != 0 &amp;&amp; object-&gt;container() != 0) || searchMode &amp; CheckContainer)
		checkContainer = true;

	if ((object != 0 &amp;&amp; object-&gt;scope() != 0) || searchMode &amp; CheckScope)
		checkScope = true;

	if ((object != 0 &amp;&amp; object-&gt;library() != 0) || searchMode &amp; checkLibrary)
		checkLibrary = true;
...

typedef boost::ptr_unordered_multimap&lt;std::string, Object&gt; ObjectList;
typedef boost::unordered_multimap&lt;std::string, Object*&gt; SpecificObjectList;
</code></pre>
<p>Ich möchte die Funktion praktisch auch auf ein Objekt des Typs ObjectList anwenden können. Kann ich irgendwie eine boost::ptr_unordered_multimap-Instanz effizient zu einer boost::unordered_multimap-Instanz umwandeln?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2189603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2189603</guid><dc:creator><![CDATA[Barade]]></dc:creator><pubDate>Wed, 07 Mar 2012 22:05:00 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion für boost::ptr_unordered_multimap und boost::unordered_multimap on Fri, 09 Mar 2012 18:26:42 GMT]]></title><description><![CDATA[<p>Warum kein Funktionstemplate verwenden, das mit <code>ObjectList</code> und <code>SpecificObjectList</code> klarkommt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190233</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 09 Mar 2012 18:26:42 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion für boost::ptr_unordered_multimap und boost::unordered_multimap on Fri, 09 Mar 2012 22:15:02 GMT]]></title><description><![CDATA[<p>Das war mein erster Ansatz, aber ich wollte wissen ob es einfacher geht. Zudem hatte ich irgendeinen Fehler bei:</p>
<pre><code>boost::iterator_range&lt;IteratorType&gt; range = objectList.equal_range(identifier);
</code></pre>
<p>wenn IteratorType &quot;boost::ptr_map_iterator&quot; war.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190288</guid><dc:creator><![CDATA[Barade]]></dc:creator><pubDate>Fri, 09 Mar 2012 22:15:02 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion für boost::ptr_unordered_multimap und boost::unordered_multimap on Sat, 10 Mar 2012 17:03:04 GMT]]></title><description><![CDATA[<p>Der Fehler kam, weil ich eine konstante Referenz verwendet habe. Leider wurde die Ausgabe etwas zugemüllt und deshalb ist es mir erst spät aufgefallen.<br />
Ich löse es jetzt über die Templatefunktion.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2190505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2190505</guid><dc:creator><![CDATA[Barade]]></dc:creator><pubDate>Sat, 10 Mar 2012 17:03:04 GMT</pubDate></item></channel></rss>