<?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[Welches &amp;quot;Array&amp;quot; erstellen?]]></title><description><![CDATA[<p>Ich will für ein objekt ein container erstellen.</p>
<p>Daher ich mir wegen der größe nicht sicher bin würde ich ein std::vector verwenden (bitte korrigieren falls es was besseres gibt), und nun möchte ich noch ein paar funktion erstellen wie zum beispiel</p>
<pre><code>std::vector&lt;Obst&gt; meinContainer;

void CommandMap::registerCommand(const Obst&amp; obst)
{
    if(std::find(meinContainer.begin(), meinContainer.end(), obst.getName()) != meinContainer.end()) //funktioniert nicht
    {
        /* mein vector beinhaltet das Objekt */
    }
    else
    {
        meinContainer.push_back(obst.getName());
    }
}
</code></pre>
<p>Allerdings funktioniert der Code bei mir nicht</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/332269/welches-quot-array-quot-erstellen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Apr 2026 05:14:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/332269.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 18 Apr 2015 23:57:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Welches &amp;quot;Array&amp;quot; erstellen? on Sat, 18 Apr 2015 23:57:49 GMT]]></title><description><![CDATA[<p>Ich will für ein objekt ein container erstellen.</p>
<p>Daher ich mir wegen der größe nicht sicher bin würde ich ein std::vector verwenden (bitte korrigieren falls es was besseres gibt), und nun möchte ich noch ein paar funktion erstellen wie zum beispiel</p>
<pre><code>std::vector&lt;Obst&gt; meinContainer;

void CommandMap::registerCommand(const Obst&amp; obst)
{
    if(std::find(meinContainer.begin(), meinContainer.end(), obst.getName()) != meinContainer.end()) //funktioniert nicht
    {
        /* mein vector beinhaltet das Objekt */
    }
    else
    {
        meinContainer.push_back(obst.getName());
    }
}
</code></pre>
<p>Allerdings funktioniert der Code bei mir nicht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450826</guid><dc:creator><![CDATA[Reba]]></dc:creator><pubDate>Sat, 18 Apr 2015 23:57:49 GMT</pubDate></item><item><title><![CDATA[Reply to Welches &amp;quot;Array&amp;quot; erstellen? on Sun, 19 Apr 2015 00:30:32 GMT]]></title><description><![CDATA[<p>So, so. Es &quot;funktioniert nicht&quot;. Dann wird da wohl ein &quot;Fehler&quot; drin sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450827</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 19 Apr 2015 00:30:32 GMT</pubDate></item><item><title><![CDATA[Reply to Welches &amp;quot;Array&amp;quot; erstellen? on Sun, 19 Apr 2015 00:37:07 GMT]]></title><description><![CDATA[<p>^^ Hier ist er:</p>
<p>error: no matching function for call to 'find(std::vector&lt;Obst&gt;::iterator, std::vector&lt;Obst&gt;::iterator, std::string)'</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450828</guid><dc:creator><![CDATA[reba]]></dc:creator><pubDate>Sun, 19 Apr 2015 00:37:07 GMT</pubDate></item><item><title><![CDATA[Reply to Welches &amp;quot;Array&amp;quot; erstellen? on Sun, 19 Apr 2015 02:06:12 GMT]]></title><description><![CDATA[<p><code>#include&lt;algorithm&gt;</code> vorhanden? Da du nicht <code>std::find</code> schreibst: <code>using namespace std</code> oder <code>using std::find</code> vorhanden?</p>
<p>In deinem <code>vector</code> sind <code>Obst</code> , du suchst aber anscheinend nach einem <code>std::string</code> . Dafür muss ein <code>Operator==</code> findbar sein, der ein <code>Obst</code> mit einem <code>std::String</code> vergleicht. Ist das beabsichtigt? Falls dies nicht beabsichtigt ist und ein solche Operator nicht vorhanden ist, sähe die Fehlermeldung jedoch anders aus.<br />
<em>Vermutlich</em> willst du wohl eher direkt nach <code>obst</code> suchen, anstatt nach <code>obst.getName()</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450829</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 19 Apr 2015 02:06:12 GMT</pubDate></item><item><title><![CDATA[Reply to Welches &amp;quot;Array&amp;quot; erstellen? on Sun, 19 Apr 2015 06:56:52 GMT]]></title><description><![CDATA[<p>Du hast recht, ich habe in diesem container voller Obst nach einem string gesucht und das geht ja sclislich nicht. Mein Ziel war es ursprünglich so ein array zu bilden<br />
(Aus PHP)</p>
<pre><code>$Obst[&quot;banane&quot;] $banane; //Banane ist ein Obejkt welches von Obst erbte
</code></pre>
<p>damit ich dann solche funktion wie</p>
<pre><code>if(isset($obst[&quot;banane&quot;])
{
    $obst[&quot;banane&quot;]-&gt;eat();
}
</code></pre>
<p>in c++ machen kann. Doch das funktioniert scheinbar nicht mit Vectoren...<br />
Hast oder jemand anders einen vorschlag?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450833</guid><dc:creator><![CDATA[reba]]></dc:creator><pubDate>Sun, 19 Apr 2015 06:56:52 GMT</pubDate></item><item><title><![CDATA[Reply to Welches &amp;quot;Array&amp;quot; erstellen? on Sun, 19 Apr 2015 07:54:35 GMT]]></title><description><![CDATA[<p>Ich glaube was du benötigst, ist ein assoziatives Array (bzw. Container).</p>
<p><a href="http://www.cplusplus.com/reference/map/map/" rel="nofollow">std::map</a> wäre hier wohl die beste Wahl.</p>
<p>Dein Code könnte dann in etwa so aussehen:</p>
<pre><code>#include &lt;map&gt;

std::map&lt;std::string, Obst&gt; meinContainer;

void CommandMap::registerCommand(const Obst&amp; obst)
{
    auto iter = meinContainer.find(obst.getName());
    if(iter == meinContainer.end())
    {
        meinContainer.insert({obst.getName(), obst});
    }
}

// Dann kannst du auch so darauf zugreifen:
meinContainer[&quot;banane&quot;].eat();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2450834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450834</guid><dc:creator><![CDATA[Singender Holzkübel]]></dc:creator><pubDate>Sun, 19 Apr 2015 07:54:35 GMT</pubDate></item><item><title><![CDATA[Reply to Welches &amp;quot;Array&amp;quot; erstellen? on Sun, 19 Apr 2015 08:08:34 GMT]]></title><description><![CDATA[<p>Singender Holzkübel schrieb:</p>
<blockquote>
<p>Ich glaube was du benötigst, ist ein assoziatives Array (bzw. Container).</p>
</blockquote>
<p>Singender Holzkuebel hat Recht aber so lange du keine alphabetische Sortierung benoetigst solltest Du eine hash map verwenden &lt;unordered_map&gt;.</p>
<p>Die outperformed die normale Map in allen belangen.<br />
(Jedenfalls so lange der Key eine vernuenftige Laenge hat aber wer hat schon Keys mit ueber 150 Zeichen.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450835</guid><dc:creator><![CDATA[Ruvi]]></dc:creator><pubDate>Sun, 19 Apr 2015 08:08:34 GMT</pubDate></item><item><title><![CDATA[Reply to Welches &amp;quot;Array&amp;quot; erstellen? on Sun, 19 Apr 2015 08:07:14 GMT]]></title><description><![CDATA[<p>Dankeschön Singender Rotzrübel<br />
jedoch h#tte ich da noch eine frage bezühlich dieser zeile:</p>
<pre><code>auto iter = meinContainer.find(obst.getName());
</code></pre>
<p>was macht das &quot;auto&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450836</guid><dc:creator><![CDATA[reba]]></dc:creator><pubDate>Sun, 19 Apr 2015 08:07:14 GMT</pubDate></item><item><title><![CDATA[Reply to Welches &amp;quot;Array&amp;quot; erstellen? on Sun, 19 Apr 2015 08:09:40 GMT]]></title><description><![CDATA[<p>reba schrieb:</p>
<blockquote>
<p>Dankeschön Singender Rotzrübel<br />
jedoch h#tte ich da noch eine frage bezühlich dieser zeile:</p>
<pre><code>auto iter = meinContainer.find(obst.getName());
</code></pre>
<p>was macht das &quot;auto&quot;?</p>
</blockquote>
<p>Auto ist nur eine Abkuerzung fuer:</p>
<pre><code>std::map&lt;std::string,Obst&gt;::iterator iter;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2450837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450837</guid><dc:creator><![CDATA[Ruvi]]></dc:creator><pubDate>Sun, 19 Apr 2015 08:09:40 GMT</pubDate></item><item><title><![CDATA[Reply to Welches &amp;quot;Array&amp;quot; erstellen? on Sun, 19 Apr 2015 13:46:58 GMT]]></title><description><![CDATA[<p>Oh anscheinend habe ich ein weiteres Problem.</p>
<pre><code>Main Klasse

bool isGood()
{
    auto iter = meinContainer.find(name);
    return iter != meinContainer.end();
}

Garten::Obst aufheben()
{
    if(isGood(name))
    {
        meinContainer[name].eat();
        return true;
    }
    return false;
}
</code></pre>
<p>Wie der obrige Code zeigt will ich die funktion eat() aufrufen.<br />
Dabei wird die Funktion eat() von der Obst klasse aufgerufen anstatt die von dem<br />
(als beispiel) &quot;apfel&quot;</p>
<p>Codes:</p>
<pre><code>class Obst
{
public:
    Obst();
    virtual void eat()
    {
        std::cout &lt;&lt; &quot;eat() wurde vom Obst aufgerufen&quot;;
    }
}

class apfel : public Obst
{
public:
    apfel() : Obst()
    {
      //meine codes
    }

    virtual void eat()
    {
        std::cout &lt;&lt; &quot;eat() wurde vom Apfel aufgerufen&quot;;
    }
}
</code></pre>
<p>Und ich möchte anstatt eat() von der Obst klasse, die eat() von der Apfel klasse aufrufe. Doch wie kann ich das machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450861</guid><dc:creator><![CDATA[reba]]></dc:creator><pubDate>Sun, 19 Apr 2015 13:46:58 GMT</pubDate></item><item><title><![CDATA[Reply to Welches &amp;quot;Array&amp;quot; erstellen? on Sun, 19 Apr 2015 13:58:41 GMT]]></title><description><![CDATA[<p>Dann kannst du nicht Objekte in deienr Map halten, sodnern musst Zeiger oder Referenzen dort halten.</p>
<p>Aber das wird jetzt ganz schnell mal eben non-trivial...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450862</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sun, 19 Apr 2015 13:58:41 GMT</pubDate></item><item><title><![CDATA[Reply to Welches &amp;quot;Array&amp;quot; erstellen? on Sun, 19 Apr 2015 14:41:51 GMT]]></title><description><![CDATA[<p>Geht das wirklich nicht anderst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> Ich würde das sehr gerne in dieser methode ausführen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450866</guid><dc:creator><![CDATA[reba]]></dc:creator><pubDate>Sun, 19 Apr 2015 14:41:51 GMT</pubDate></item><item><title><![CDATA[Reply to Welches &amp;quot;Array&amp;quot; erstellen? on Sun, 19 Apr 2015 15:10:43 GMT]]></title><description><![CDATA[<p>Gehen tut 'ne ganze Menge. Was du aber zunächst mal verstehen musst, ist, dass C++ nicht PHP ist. Beispiel:</p>
<pre><code class="language-cpp">Apfel x = ...;
Obst y = x;
</code></pre>
<p>Hier sind x und y <em>keine</em> Referenzen, <em>keine</em> Zeiger oder was man dazu auch sonst in PHP sagen mag. x und y sind die Objekte <em>selbst</em>. Hier wird nur der Obst-Teil des Apfelobjekts x nach y kopiert, genauso wie bei</p>
<pre><code class="language-cpp">int x = 1729;
int y = x;
</code></pre>
<p>der Wert von x in y reinkopiert wird. Mit anderen Worten: In C++ sind Indirektionen nicht implizit für Klassentypen. Wenn du etwas Zeiger-artiges haben willst, nimm etwas Zeiger-artiges.</p>
<p>Dann kommt auch gleich das nächste Problem: Du weißt wahrscheinlich noch nichts von RAII, dem Ownership-Konzept und so weiter.</p>
<p>Du hast also viel Nachholbedarf! Erwarte nicht, dass du hier kostenlose Privatstunden bekommst. Also: Schnapp dir ein gutes, schlaues C++ Buch und lerne.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2450871</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450871</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 19 Apr 2015 15:10:43 GMT</pubDate></item><item><title><![CDATA[Reply to Welches &amp;quot;Array&amp;quot; erstellen? on Sun, 19 Apr 2015 15:13:35 GMT]]></title><description><![CDATA[<p>reba schrieb:</p>
<blockquote>
<p>Geht das wirklich nicht anderst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> Ich würde das sehr gerne in dieser methode ausführen</p>
</blockquote>
<p>So zum Beispiel (ist ziemlich ähnlich, nur dass zeiger verwendet werden):</p>
<pre><code>#include &lt;memory&gt;
#include &lt;unordered_map&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

struct Fruit
{
	string name() const { return &quot;Fruit&quot;; }
	virtual void eat() const { cout &lt;&lt; &quot;eat() from fruit!\n&quot;; }
};

struct Apple : Fruit
{
	string name() const { return &quot;Apple&quot;; }
	void eat() const override { cout &lt;&lt; &quot;eat() from apple!\n&quot;; }
};

struct Banana : Fruit
{
	string name() const { return &quot;Banana&quot;; }
	void eat() const override { cout &lt;&lt; &quot;eat() from banana!\n&quot;; }
};

int main()
{
	using FruitBox = unordered_map&lt;string, unique_ptr&lt;Fruit&gt;&gt;;

	auto fruit = make_unique&lt;Fruit&gt;();
	auto apple = make_unique&lt;Apple&gt;();
	auto banana = make_unique&lt;Banana&gt;();

	FruitBox fruits;
	fruits[fruit-&gt;name()] = move(fruit);
	fruits[apple-&gt;name()] = move(apple);
	fruits[banana-&gt;name()] = move(banana);

	for (auto const &amp;f : fruits)
	{
		f.second-&gt;eat();
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2450872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2450872</guid><dc:creator><![CDATA[obst ist gesund]]></dc:creator><pubDate>Sun, 19 Apr 2015 15:13:35 GMT</pubDate></item></channel></rss>