<?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[[STL] Wörterbuch]]></title><description><![CDATA[<p>Hi,</p>
<p>ich möchte mir ein Wörterbuch erstellen, mit dem ich Enumerationen in Strings und wieder zurückübertragen kann. Das Wörterbuch sollte dazu 2 statische überladenen Fkt. <em>find()</em> besitzen. Es besitzt ca. 20 einträge.</p>
<p>Meine Lösung sieht bisher so aus:</p>
<pre><code class="language-cpp">enum MyEnum
{
	MY_NULL,
	MY_EINS,
	MY_ZWEI,
	MY_DREI,
	MY_ERROR
};

class MyDictionary
{
public:
	typedef std::map&lt;MyEnum, std::string&gt; DictType;

	static std::string	find(MyEnum e) {
		if (_dict.empty())	init();
		return (*_dict.find(e)).second;
	}

	static MyEnum find(const std::string&amp; str) {
		if (_dict.empty())	init();
		DictType::iterator it = _dict.begin();
		while (it != _dict.end()) {
			if ((*it).second == str)	return (*it).first;
			++it;
		} 
		return MY_ERROR;
	}

private:
	static DictType	_dict;

	static void init() {
		_dict[MY_NULL] = &quot;null&quot;;
		_dict[MY_EINS] = &quot;eins&quot;;
		_dict[MY_ZWEI] = &quot;zwei&quot;;
		_dict[MY_DREI] = &quot;drei&quot;;
	}
};
</code></pre>
<p>Habt ihr Tipps oder Verbesserungsverschläge?</p>
<p>Grüße,<br />
don_basto.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/163978/stl-wörterbuch</link><generator>RSS for Node</generator><lastBuildDate>Sun, 13 Sep 2026 16:49:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/163978.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 03 Nov 2006 17:56:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [STL] Wörterbuch on Fri, 03 Nov 2006 17:56:14 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich möchte mir ein Wörterbuch erstellen, mit dem ich Enumerationen in Strings und wieder zurückübertragen kann. Das Wörterbuch sollte dazu 2 statische überladenen Fkt. <em>find()</em> besitzen. Es besitzt ca. 20 einträge.</p>
<p>Meine Lösung sieht bisher so aus:</p>
<pre><code class="language-cpp">enum MyEnum
{
	MY_NULL,
	MY_EINS,
	MY_ZWEI,
	MY_DREI,
	MY_ERROR
};

class MyDictionary
{
public:
	typedef std::map&lt;MyEnum, std::string&gt; DictType;

	static std::string	find(MyEnum e) {
		if (_dict.empty())	init();
		return (*_dict.find(e)).second;
	}

	static MyEnum find(const std::string&amp; str) {
		if (_dict.empty())	init();
		DictType::iterator it = _dict.begin();
		while (it != _dict.end()) {
			if ((*it).second == str)	return (*it).first;
			++it;
		} 
		return MY_ERROR;
	}

private:
	static DictType	_dict;

	static void init() {
		_dict[MY_NULL] = &quot;null&quot;;
		_dict[MY_EINS] = &quot;eins&quot;;
		_dict[MY_ZWEI] = &quot;zwei&quot;;
		_dict[MY_DREI] = &quot;drei&quot;;
	}
};
</code></pre>
<p>Habt ihr Tipps oder Verbesserungsverschläge?</p>
<p>Grüße,<br />
don_basto.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1167885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1167885</guid><dc:creator><![CDATA[don_basto]]></dc:creator><pubDate>Fri, 03 Nov 2006 17:56:14 GMT</pubDate></item><item><title><![CDATA[Reply to [STL] Wörterbuch on Sat, 04 Nov 2006 09:50:36 GMT]]></title><description><![CDATA[<p>Für ein fest vorgegebenes Enum dürfte ein Array vöölig ausreichen: vom Wert zum String kommst du per Index-Zugriff, rückwärts über std::find().</p>
<p>Außerdem könntest du auf ein Problem stoßen, wenn du _dict.end() derefenzieren willst (z.B. bei <code>find(MY_ERROR)</code> ).</p>
<p>Für einen allgemeineren Ansatz würde ich vermutlich in int's um&quot;rechnen&quot; - und der Klasse noch Funktionen zum Ergänzen/Löschen von Zuordnungen mitgeben. Und ich würde die Funktionen NICHT static setzen (das hätte den Vorteil, daß du mehrere verschiedene Wörterbücher nebeneinander verwenden kannst).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168096</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 04 Nov 2006 09:50:36 GMT</pubDate></item><item><title><![CDATA[Reply to [STL] Wörterbuch on Sat, 04 Nov 2006 10:29:09 GMT]]></title><description><![CDATA[<p>Danke soweit. Die find()-Methode der Map hab ich geändert. Einen Vektor mit Index als Enum funktioniert hier nicht, da die Enums nicht immer aufsteigende Werte haben.</p>
<p>// EDIT: Die Idee mit den ints wäre auch eine Möglichkeit, obwohl es schon schick ist, einen &quot;eigenen&quot; Typ für Rückgabewerte, etc. zu haben. Mal sehen ..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168106</guid><dc:creator><![CDATA[don_basto]]></dc:creator><pubDate>Sat, 04 Nov 2006 10:29:09 GMT</pubDate></item></channel></rss>