<?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[vector oder multimap?]]></title><description><![CDATA[<p>Hi,<br />
Ich habe ein Problem und zwar kann ich mich nicht entscheiden ob ich &lt;vector&gt; oder doch &lt;multimap&gt; verwenden sollte.. Ich habe ein CPoint Klasse gschrieben die einzelne Punkte speichert und diese später im Konsolenfenster ausgibt (ist eine Art Zeichenklasse)...Nun die Punkte haben auch ID's die der Benutzer der Klasse selbst setzen kann, nun weiß ich nicht wie ich es machen soll, ich hab mal eine Version von CPoint mit benutzung eines &lt;vector&gt;'s geschrieben</p>
<p>*.h :</p>
<pre><code class="language-cpp">#ifndef CPOINT_H
#define CPOINT_H

#include &quot;..\apptypedefs.h&quot;
#include &quot;nssrdraw.h&quot;        // &lt;- Wichtige Header für alle SRDraw-Klassen

#include &lt;vector&gt;

// CPoint dient zum speichern einzelner Punkte und zeichnet diese im Konsolenfenster.
// In Fehlersuche ist sie ziemlich beschränkt und kontrolliert nur das nötigste und stellt
// diese Werte richtig, aber Fehlerausgaben wird man nie zu sehen bekommen

class CPoint
{
    private :
        struct POINT_DATA
        {
            BYTE       _nvChar;  // Numerischer Wert eines Zeichens
            srd::COLOR _clr;     // Farbe des Punktes
            USHORT     _x;       // X/Y-Position
            USHORT     _y;       // des Punktes
            UINT       _ID;      // ID des Punktes
        };

        typedef std::vector&lt;POINT_DATA&gt;           VPD;
        typedef std::vector&lt;POINT_DATA&gt;::iterator VPD_IT;

    public:
        // KONSTRUKTORE

        // size, Anfangsgröße des Containers
        // add, Vergrößerung des Containers falls er voll ist
        // Reserviert Speicherplatz &amp; initialisiert _size &amp; _add
        CPoint(size_t size, size_t add) : _size(size), _add(add)
        {
            _vpd.reserve(size);
        }

        // Leert den Inhalt des Containers
        ~CPoint()
        {
            _vpd.clear();
        }

        CPoint(const CPoint &amp;rCpy);

        // DE/INITIALISIERUNGSMETHODEN
        void InitNewPoint(BYTE nvChar, UINT id, srd::COLOR clr, USHORT xPos, USHORT yPos);  // Speichert einen neuen Punkt

        void Remove(UINT pos);  // Ein Punkt wird gelöscht
        void Remove(UINT beg, UINT end);  // Alle Punkte im Bereich beg-1 - end werden gelöscht
        void Remove(UINT pointID, UINT beg, UINT end);  // Alle Punkte im Bereich beg-1 - end die die als Parameter übergebene pointID haben,
                                                        // werden gelöscht

        // ZEICHENMETHODEN
        void Draw();  // Zeichnet alle Punkte
        void Draw(UINT pos);  // Zeichnet den Punkt der auf pos-1 gespeichert ist
        void Draw(UINT beg, UINT end);  // Zeichnet alle Punkte im Bereich beg-1 - end-1
        void Draw(UINT pointID, UINT beg, UINT end);  // Zeichnet alle Punkte im Bereich beg-1 - end-1 die die als Parameter übergebene pointID haben

        // OPERATOR ÜBERLADUNG
        CPoint&amp; operator=(const CPoint &amp;rp);
        CPoint&amp; operator+(const CPoint &amp;rp);
        CPoint&amp; operator+=(const CPoint &amp;rp);

        // INFO
        size_t get_size() const { return _vpd.size(); }  // Gibt die Anzahl an Punkte zurück

    private:
        // KONTROLLMETHODEN
        void checkXY(USHORT &amp;x, USHORT &amp;y) const;
        void compare(UINT &amp;val1, UINT &amp;val2) const;

        // EIGENSCHAFTEN
        VPD    _vpd;  // Container, %vector
        size_t _size; // Aktuelle Größe(Kapazität) von _vpd
        size_t _add;  // Vergrößerung des Containers FALLS er voll ist
};

#endif // CPOINT_H
</code></pre>
<p>*.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;cpoint.h&quot;

//
// KONSTRUKTORE
//

CPoint::CPoint(const CPoint &amp;rCpy) : _size(rCpy.get_size()), _add(rCpy._add)
{
    _vpd.reserve(_size);
    copy(rCpy._vpd.begin(), rCpy._vpd.end(), back_inserter(_vpd));
}

//
// DE/INITIALISIERUNGSMETHODEN
//

void CPoint::InitNewPoint(BYTE nvChar, UINT id, srd::COLOR clr, USHORT xPos, USHORT yPos)
{
    POINT_DATA tmp;

    checkXY(xPos, yPos);  // Falls &quot;falsche&quot; Werte übergeben wurden, werden sie richtig gestellt

    tmp._nvChar = nvChar;
    tmp._ID     = id;
    tmp._clr    = clr;
    tmp._x      = xPos;
    tmp._y      = yPos;

    if(get_size() == _size)  // Ist der Container voll?
    {
        _size += _add;
        _vpd.reserve(_size);  // Speicherplatz für weitere _add Punkte reservieren
    }

    _vpd.push_back(tmp);
}

void CPoint::Remove(UINT pos)
{
    VPD_IT itPos = _vpd.begin();

    advance(itPos, pos-1);
    _vpd.erase(itPos);
}

void CPoint::Remove(UINT beg, UINT end)
{
    VPD_IT itBeg = _vpd.begin(),
           itEnd = itBeg;

    advance(itBeg, beg-1);
    advance(itEnd, end);

    _vpd.erase(itBeg, itEnd);
}

void CPoint::Remove(UINT pointID, UINT beg, UINT end)
{
    VPD_IT itBeg = _vpd.begin(),
           itEnd = itBeg;

    advance(itBeg, beg-1);
    advance(itEnd, end);

    for( ; itBeg &lt; itEnd; ++itBeg)
    {
        if(itBeg-&gt;_ID == pointID)
        {
            _vpd.erase(itBeg);
            --itBeg;
            --itEnd;
        }
    }
}

//
// ZEICHENMETHODEN
//

void CPoint::Draw()
{
    VPD_IT it = _vpd.begin();

    for( ; it &lt; _vpd.end(); ++it)
    {
        srd::SetTxtClr(it-&gt;_clr);
        srd::MoveTo(it-&gt;_x, it-&gt;_y);

        std::cout &lt;&lt; it-&gt;_nvChar;
    }
}

void CPoint::Draw(UINT pos)
{
    VPD_IT it = _vpd.begin();
    advance(it, pos-1);

    srd::SetTxtClr(it-&gt;_clr);
    srd::MoveTo(it-&gt;_x, it-&gt;_y);

    std::cout &lt;&lt; it-&gt;_nvChar;
}

void CPoint::Draw(UINT beg, UINT end)
{
    VPD_IT itBeg = _vpd.begin(),
           itEnd = itBeg;

    advance(itBeg, beg-1);
    advance(itEnd, end);

    for( ; itBeg &lt; itEnd; ++itBeg)
    {
        srd::SetTxtClr(itBeg-&gt;_clr);
        srd::MoveTo(itBeg-&gt;_x, itBeg-&gt;_y);

        std::cout &lt;&lt; itBeg-&gt;_nvChar;
    }
}

void CPoint::Draw(UINT pointID, UINT beg, UINT end)
{
    VPD_IT itBeg = _vpd.begin(),
           itEnd = itBeg;

    advance(itBeg, beg-1);
    advance(itEnd, end);

    for( ; itBeg &lt; itEnd; ++itBeg)
    {
        if(itBeg-&gt;_ID == pointID)
        {
            srd::SetTxtClr(itBeg-&gt;_clr);
            srd::MoveTo(itBeg-&gt;_x, itBeg-&gt;_y);

            std::cout &lt;&lt; itBeg-&gt;_nvChar;
        }
    }
}

//
// OPERATOR ÜBERLADUNG
//

CPoint&amp; CPoint::operator=(const CPoint &amp;rp)
{
    if(this == &amp;rp)
        return *this;

    _vpd.clear();

    if(_vpd.capacity() &lt; rp.get_size())  // Nicht genug Platz?
    {
        size_t n = rp.get_size() - _vpd.capacity();  // Für wieviele Elemente zusätzlichen Speicher anfordern?
        _size += n;
        _vpd.reserve(_size);
    }

    copy(rp._vpd.begin(), rp._vpd.end(), back_inserter(_vpd));

    return *this;
}

CPoint&amp; CPoint::operator+(const CPoint &amp;rp)
{
    if(rp.get_size() &lt; 1)
        return *this;

    size_t free = _size - get_size();  // Freier Speicherplatz ermitteln

    if(free &lt; rp.get_size())  // Muss man Speicherplatz reservieren?
    {
        _size += (rp.get_size() - free);
        _vpd.reserve(_size);  // Nur reservieren was man auch braucht
    }

    copy(rp._vpd.begin(), rp._vpd.end(), back_inserter(_vpd));

    return *this;
}

CPoint&amp; CPoint::operator+=(const CPoint &amp;rp)
{
    if(rp._vpd.size() &lt; 1)
        return *this;

    size_t free = _size - _vpd.size();  // Freier Speicherplatz ermitteln

    if(free &lt; rp.get_size())  // Muss man Speicherplatz reservieren?
    {
        _size += (rp.get_size() - free);
        _vpd.reserve(_size);  // Nur reservieren was man auch braucht
    }

    copy(rp._vpd.begin(), rp._vpd.end(), back_inserter(_vpd));

    return *this;
}

//
// KONTROLLMETHODEN
//

void CPoint::checkXY(USHORT &amp;x, USHORT &amp;y) const
{
    if(x &lt; 1)
    {
        x = 80;
        y -= 1;
        checkXY(x, y);
    }

    if(x &gt; 80)
    {
        x = 1;
        y += 1;
    }

    if(y &lt; 1)
        y = 1;
}

void CPoint::compare(UINT &amp;val1, UINT &amp;val2) const
{
    if(val1 &gt; val2)
    {
        UINT tmp = val1;
        val1 = val2;
        val2 = tmp;
    }
}
</code></pre>
<p>Wie ich finde arbeitet diese Version recht schnell wenn man sie RICHTIG verwendet, dennoch macht es mich nachdenklich wenn ich lese : wenn man &lt;multimap&gt; benutzt benutzt kommt viel schneller an die Daten...aber wie gesagt die &lt;vector&gt; version geht auch recht schnell (laut Code::Blocks exec time : 0.000 - 0.014 sec)</p>
<p>Nun wollte ich euch fragen &lt;vector&gt; oder doch &lt;multimap&gt;?<br />
Tut mir leid wenn das ganze hier etwas blöde rüberkommt aber ich bin nicht gerade der beste in Sachen STL und kann mich niht entscheiden -.-</p>
<p>Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/221213/vector-oder-multimap</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 06:55:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/221213.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 26 Aug 2008 13:18:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to vector oder multimap? on Tue, 26 Aug 2008 13:18:17 GMT]]></title><description><![CDATA[<p>Hi,<br />
Ich habe ein Problem und zwar kann ich mich nicht entscheiden ob ich &lt;vector&gt; oder doch &lt;multimap&gt; verwenden sollte.. Ich habe ein CPoint Klasse gschrieben die einzelne Punkte speichert und diese später im Konsolenfenster ausgibt (ist eine Art Zeichenklasse)...Nun die Punkte haben auch ID's die der Benutzer der Klasse selbst setzen kann, nun weiß ich nicht wie ich es machen soll, ich hab mal eine Version von CPoint mit benutzung eines &lt;vector&gt;'s geschrieben</p>
<p>*.h :</p>
<pre><code class="language-cpp">#ifndef CPOINT_H
#define CPOINT_H

#include &quot;..\apptypedefs.h&quot;
#include &quot;nssrdraw.h&quot;        // &lt;- Wichtige Header für alle SRDraw-Klassen

#include &lt;vector&gt;

// CPoint dient zum speichern einzelner Punkte und zeichnet diese im Konsolenfenster.
// In Fehlersuche ist sie ziemlich beschränkt und kontrolliert nur das nötigste und stellt
// diese Werte richtig, aber Fehlerausgaben wird man nie zu sehen bekommen

class CPoint
{
    private :
        struct POINT_DATA
        {
            BYTE       _nvChar;  // Numerischer Wert eines Zeichens
            srd::COLOR _clr;     // Farbe des Punktes
            USHORT     _x;       // X/Y-Position
            USHORT     _y;       // des Punktes
            UINT       _ID;      // ID des Punktes
        };

        typedef std::vector&lt;POINT_DATA&gt;           VPD;
        typedef std::vector&lt;POINT_DATA&gt;::iterator VPD_IT;

    public:
        // KONSTRUKTORE

        // size, Anfangsgröße des Containers
        // add, Vergrößerung des Containers falls er voll ist
        // Reserviert Speicherplatz &amp; initialisiert _size &amp; _add
        CPoint(size_t size, size_t add) : _size(size), _add(add)
        {
            _vpd.reserve(size);
        }

        // Leert den Inhalt des Containers
        ~CPoint()
        {
            _vpd.clear();
        }

        CPoint(const CPoint &amp;rCpy);

        // DE/INITIALISIERUNGSMETHODEN
        void InitNewPoint(BYTE nvChar, UINT id, srd::COLOR clr, USHORT xPos, USHORT yPos);  // Speichert einen neuen Punkt

        void Remove(UINT pos);  // Ein Punkt wird gelöscht
        void Remove(UINT beg, UINT end);  // Alle Punkte im Bereich beg-1 - end werden gelöscht
        void Remove(UINT pointID, UINT beg, UINT end);  // Alle Punkte im Bereich beg-1 - end die die als Parameter übergebene pointID haben,
                                                        // werden gelöscht

        // ZEICHENMETHODEN
        void Draw();  // Zeichnet alle Punkte
        void Draw(UINT pos);  // Zeichnet den Punkt der auf pos-1 gespeichert ist
        void Draw(UINT beg, UINT end);  // Zeichnet alle Punkte im Bereich beg-1 - end-1
        void Draw(UINT pointID, UINT beg, UINT end);  // Zeichnet alle Punkte im Bereich beg-1 - end-1 die die als Parameter übergebene pointID haben

        // OPERATOR ÜBERLADUNG
        CPoint&amp; operator=(const CPoint &amp;rp);
        CPoint&amp; operator+(const CPoint &amp;rp);
        CPoint&amp; operator+=(const CPoint &amp;rp);

        // INFO
        size_t get_size() const { return _vpd.size(); }  // Gibt die Anzahl an Punkte zurück

    private:
        // KONTROLLMETHODEN
        void checkXY(USHORT &amp;x, USHORT &amp;y) const;
        void compare(UINT &amp;val1, UINT &amp;val2) const;

        // EIGENSCHAFTEN
        VPD    _vpd;  // Container, %vector
        size_t _size; // Aktuelle Größe(Kapazität) von _vpd
        size_t _add;  // Vergrößerung des Containers FALLS er voll ist
};

#endif // CPOINT_H
</code></pre>
<p>*.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;cpoint.h&quot;

//
// KONSTRUKTORE
//

CPoint::CPoint(const CPoint &amp;rCpy) : _size(rCpy.get_size()), _add(rCpy._add)
{
    _vpd.reserve(_size);
    copy(rCpy._vpd.begin(), rCpy._vpd.end(), back_inserter(_vpd));
}

//
// DE/INITIALISIERUNGSMETHODEN
//

void CPoint::InitNewPoint(BYTE nvChar, UINT id, srd::COLOR clr, USHORT xPos, USHORT yPos)
{
    POINT_DATA tmp;

    checkXY(xPos, yPos);  // Falls &quot;falsche&quot; Werte übergeben wurden, werden sie richtig gestellt

    tmp._nvChar = nvChar;
    tmp._ID     = id;
    tmp._clr    = clr;
    tmp._x      = xPos;
    tmp._y      = yPos;

    if(get_size() == _size)  // Ist der Container voll?
    {
        _size += _add;
        _vpd.reserve(_size);  // Speicherplatz für weitere _add Punkte reservieren
    }

    _vpd.push_back(tmp);
}

void CPoint::Remove(UINT pos)
{
    VPD_IT itPos = _vpd.begin();

    advance(itPos, pos-1);
    _vpd.erase(itPos);
}

void CPoint::Remove(UINT beg, UINT end)
{
    VPD_IT itBeg = _vpd.begin(),
           itEnd = itBeg;

    advance(itBeg, beg-1);
    advance(itEnd, end);

    _vpd.erase(itBeg, itEnd);
}

void CPoint::Remove(UINT pointID, UINT beg, UINT end)
{
    VPD_IT itBeg = _vpd.begin(),
           itEnd = itBeg;

    advance(itBeg, beg-1);
    advance(itEnd, end);

    for( ; itBeg &lt; itEnd; ++itBeg)
    {
        if(itBeg-&gt;_ID == pointID)
        {
            _vpd.erase(itBeg);
            --itBeg;
            --itEnd;
        }
    }
}

//
// ZEICHENMETHODEN
//

void CPoint::Draw()
{
    VPD_IT it = _vpd.begin();

    for( ; it &lt; _vpd.end(); ++it)
    {
        srd::SetTxtClr(it-&gt;_clr);
        srd::MoveTo(it-&gt;_x, it-&gt;_y);

        std::cout &lt;&lt; it-&gt;_nvChar;
    }
}

void CPoint::Draw(UINT pos)
{
    VPD_IT it = _vpd.begin();
    advance(it, pos-1);

    srd::SetTxtClr(it-&gt;_clr);
    srd::MoveTo(it-&gt;_x, it-&gt;_y);

    std::cout &lt;&lt; it-&gt;_nvChar;
}

void CPoint::Draw(UINT beg, UINT end)
{
    VPD_IT itBeg = _vpd.begin(),
           itEnd = itBeg;

    advance(itBeg, beg-1);
    advance(itEnd, end);

    for( ; itBeg &lt; itEnd; ++itBeg)
    {
        srd::SetTxtClr(itBeg-&gt;_clr);
        srd::MoveTo(itBeg-&gt;_x, itBeg-&gt;_y);

        std::cout &lt;&lt; itBeg-&gt;_nvChar;
    }
}

void CPoint::Draw(UINT pointID, UINT beg, UINT end)
{
    VPD_IT itBeg = _vpd.begin(),
           itEnd = itBeg;

    advance(itBeg, beg-1);
    advance(itEnd, end);

    for( ; itBeg &lt; itEnd; ++itBeg)
    {
        if(itBeg-&gt;_ID == pointID)
        {
            srd::SetTxtClr(itBeg-&gt;_clr);
            srd::MoveTo(itBeg-&gt;_x, itBeg-&gt;_y);

            std::cout &lt;&lt; itBeg-&gt;_nvChar;
        }
    }
}

//
// OPERATOR ÜBERLADUNG
//

CPoint&amp; CPoint::operator=(const CPoint &amp;rp)
{
    if(this == &amp;rp)
        return *this;

    _vpd.clear();

    if(_vpd.capacity() &lt; rp.get_size())  // Nicht genug Platz?
    {
        size_t n = rp.get_size() - _vpd.capacity();  // Für wieviele Elemente zusätzlichen Speicher anfordern?
        _size += n;
        _vpd.reserve(_size);
    }

    copy(rp._vpd.begin(), rp._vpd.end(), back_inserter(_vpd));

    return *this;
}

CPoint&amp; CPoint::operator+(const CPoint &amp;rp)
{
    if(rp.get_size() &lt; 1)
        return *this;

    size_t free = _size - get_size();  // Freier Speicherplatz ermitteln

    if(free &lt; rp.get_size())  // Muss man Speicherplatz reservieren?
    {
        _size += (rp.get_size() - free);
        _vpd.reserve(_size);  // Nur reservieren was man auch braucht
    }

    copy(rp._vpd.begin(), rp._vpd.end(), back_inserter(_vpd));

    return *this;
}

CPoint&amp; CPoint::operator+=(const CPoint &amp;rp)
{
    if(rp._vpd.size() &lt; 1)
        return *this;

    size_t free = _size - _vpd.size();  // Freier Speicherplatz ermitteln

    if(free &lt; rp.get_size())  // Muss man Speicherplatz reservieren?
    {
        _size += (rp.get_size() - free);
        _vpd.reserve(_size);  // Nur reservieren was man auch braucht
    }

    copy(rp._vpd.begin(), rp._vpd.end(), back_inserter(_vpd));

    return *this;
}

//
// KONTROLLMETHODEN
//

void CPoint::checkXY(USHORT &amp;x, USHORT &amp;y) const
{
    if(x &lt; 1)
    {
        x = 80;
        y -= 1;
        checkXY(x, y);
    }

    if(x &gt; 80)
    {
        x = 1;
        y += 1;
    }

    if(y &lt; 1)
        y = 1;
}

void CPoint::compare(UINT &amp;val1, UINT &amp;val2) const
{
    if(val1 &gt; val2)
    {
        UINT tmp = val1;
        val1 = val2;
        val2 = tmp;
    }
}
</code></pre>
<p>Wie ich finde arbeitet diese Version recht schnell wenn man sie RICHTIG verwendet, dennoch macht es mich nachdenklich wenn ich lese : wenn man &lt;multimap&gt; benutzt benutzt kommt viel schneller an die Daten...aber wie gesagt die &lt;vector&gt; version geht auch recht schnell (laut Code::Blocks exec time : 0.000 - 0.014 sec)</p>
<p>Nun wollte ich euch fragen &lt;vector&gt; oder doch &lt;multimap&gt;?<br />
Tut mir leid wenn das ganze hier etwas blöde rüberkommt aber ich bin nicht gerade der beste in Sachen STL und kann mich niht entscheiden -.-</p>
<p>Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571704</guid><dc:creator><![CDATA[STL Anfänger]]></dc:creator><pubDate>Tue, 26 Aug 2008 13:18:17 GMT</pubDate></item><item><title><![CDATA[Reply to vector oder multimap? on Tue, 26 Aug 2008 14:59:37 GMT]]></title><description><![CDATA[<p>ist doch ok so...</p>
<p>oder nicht?</p>
<p>und wenn du damit zufrieden bist is doch auch alles paletti<br />
und sollte es dir wirklich so extremst auf geschwindigkeit ankommen geh mal dein rpogramm mit nem profiler durch dann siehste wod er am längsten hängt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571780</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Tue, 26 Aug 2008 14:59:37 GMT</pubDate></item><item><title><![CDATA[Reply to vector oder multimap? on Tue, 26 Aug 2008 15:09:30 GMT]]></title><description><![CDATA[<p>Hi,<br />
Danke für deine Antwort <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Ja also um ehrlich zu sein bin ich sehr zufrieden mit meiner Klasse <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Ok das werde ich mal machen =)... kennst du vllt einen guten Profiler?</p>
<p>Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571784</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571784</guid><dc:creator><![CDATA[STL Anfänger]]></dc:creator><pubDate>Tue, 26 Aug 2008 15:09:30 GMT</pubDate></item><item><title><![CDATA[Reply to vector oder multimap? on Tue, 26 Aug 2008 15:50:20 GMT]]></title><description><![CDATA[<p>nein sorry</p>
<p>wenn ich ehrlich bin hab ich damit acuh noch nie gearbeitet<br />
aber heir im forum stolperst du öfters mal über diesen begriff und kannst in per suchfunktion finden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571805</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Tue, 26 Aug 2008 15:50:20 GMT</pubDate></item><item><title><![CDATA[Reply to vector oder multimap? on Tue, 26 Aug 2008 15:51:44 GMT]]></title><description><![CDATA[<p>Hi,<br />
ist kein Problem...ich hab das gemacht und hab mal den AMD CodeAnalyst besorgt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571806</guid><dc:creator><![CDATA[STL Anfänger]]></dc:creator><pubDate>Tue, 26 Aug 2008 15:51:44 GMT</pubDate></item></channel></rss>