<?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[Einzelne Zeichen in Array gespeichert...]]></title><description><![CDATA[<p>Guten Morgen,</p>
<p>zu meinem Problem; Ich habe ein char-Array gegeben mit einzelnen Zeichen. zb. arr[10] = {'a' , 'b', 'c', 'a', 'e' } nun muss ich zählen wieviele Zeichen darin enthalten sind und viele davon &quot;verschieden&quot; . siehe Beispiel 5 Zeichen und 4 verschieden. ich kriege das mit der Anzahl an verschiedenen Zeichen einfach nicht hin. <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="😞"
    /></p>
<p>Mfg</p>
<p>C++Goku</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/298136/einzelne-zeichen-in-array-gespeichert</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 23:33:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/298136.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 14 Jan 2012 10:34:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Einzelne Zeichen in Array gespeichert... on Sat, 14 Jan 2012 10:34:27 GMT]]></title><description><![CDATA[<p>Guten Morgen,</p>
<p>zu meinem Problem; Ich habe ein char-Array gegeben mit einzelnen Zeichen. zb. arr[10] = {'a' , 'b', 'c', 'a', 'e' } nun muss ich zählen wieviele Zeichen darin enthalten sind und viele davon &quot;verschieden&quot; . siehe Beispiel 5 Zeichen und 4 verschieden. ich kriege das mit der Anzahl an verschiedenen Zeichen einfach nicht hin. <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="😞"
    /></p>
<p>Mfg</p>
<p>C++Goku</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167928</guid><dc:creator><![CDATA[C++Goku]]></dc:creator><pubDate>Sat, 14 Jan 2012 10:34:27 GMT</pubDate></item><item><title><![CDATA[Reply to Einzelne Zeichen in Array gespeichert... on Sat, 14 Jan 2012 10:37:39 GMT]]></title><description><![CDATA[<p>Na ja, du musst dir halt merken welche Zeichen schon vorgekommen sind. Entweder du schreibst alle neuen Zeichen in ein neues Array (das genau so groß ist wie Array 1), guckst dann immer ob das Zeichen schon &quot;bekannt&quot; ist und prüfst dann wie viele Zeichen in dem neuen Array stehen, oder du nutzt gleich eine std::map.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167929</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 14 Jan 2012 10:37:39 GMT</pubDate></item><item><title><![CDATA[Reply to Einzelne Zeichen in Array gespeichert... on Sat, 14 Jan 2012 11:36:21 GMT]]></title><description><![CDATA[<p>Wenn es um <code>char</code> geht, kann man auch gut einfach ein <code>array</code> benutzen.</p>
<pre><code class="language-cpp">template&lt;typename Iter&gt;
std::array&lt;size_t, 256&gt; ZaehlerTabelle(Iter first, Iter last)
{
    std::array&lt;size_t, 256&gt; zaehler = {{0}};
    for(Iter it = first;it != last; ++it)
    {
        ++zaehler[*it];
    }
    return zaehler;
}

template&lt;typename Iter&gt;
size_t VerschiedeneZeichen(Iter first, Iter last)
{
    auto tabelle = ZaehlerTabelle(first, last);
    size_t nichtVorkommend = std::count(tabelle.begin(), tabelle.end(), 0);
    size_t vorkommend = tabelle.size() - nichtVorkommend;
    return vorkommend;
}

int main()
{
    std::array&lt;char, 4&gt; zeichen = {{'a', 'b', 'c', 'a'}};
    auto anzahl = VerschiedeneZeichen(zeichen.begin(), zeichen.end());
    std::cout &lt;&lt; anzahl;
}
</code></pre>
<p>Wenn es um einen größeren Typen geht, sollte man stattdessen wie schon gesgat wurde eine <code>map</code> oder <code>unordered_map</code> benutzen. Alternativ kann man das Array auch sortieren und dann bei einem einmaligen Durchlauf mitzählen:</p>
<pre><code class="language-cpp">template&lt;typename Iter&gt;
size_t VerschiedeneZeichenInSortiert(Iter first, Iter last)
{
    typedef typename std::iterator_traits&lt;Iter&gt;::value_type CharType;
    size_t anzahl = 1;
    CharType voriger = *first;
    for(Iter it = first; it != last; ++it)
    {
        if (*it != voriger)
            ++anzahl;
        voriger = *it;
    }
    return anzahl;
}

template&lt;typename Iter&gt;
size_t VerschiedeneZeichen(Iter first, Iter last)
{
    typedef typename std::iterator_traits&lt;Iter&gt;::value_type CharType;
    std::vector&lt;CharType&gt; sortiert(first, last);
    std::sort(sortiert.begin(), sortiert.end());
    return VerschiedeneZeichenInSortiert(sortiert.begin(), sortiert.end());
}

int main()
{
    std::array&lt;char, 4&gt; zeichen = {{'a', 'b', 'c', 'a'}};
    auto anzahl = VerschiedeneZeichen(zeichen.begin(), zeichen.end());
    std::cout &lt;&lt; anzahl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2167955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167955</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Sat, 14 Jan 2012 11:36:21 GMT</pubDate></item><item><title><![CDATA[Reply to Einzelne Zeichen in Array gespeichert... on Sat, 14 Jan 2012 11:52:55 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">const char* psz = &quot;banane&quot;;
const int anzahl = strlen(psz);
set&lt;char&gt; foo (psz,psz+anzahl);
const int verschieden = foo.size();
foo.clear();
</code></pre>
<p>oder so ähnlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2167960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2167960</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sat, 14 Jan 2012 11:52:55 GMT</pubDate></item></channel></rss>