<?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[Iterator auf Vector mit Zeigern]]></title><description><![CDATA[<p>Es existiere ein Vector mit Zeigern.</p>
<pre><code class="language-cpp">std::vector&lt;Foo*&gt; f;

std::vector&lt;Foo*&gt;::iterator iter;
</code></pre>
<p>mit</p>
<pre><code class="language-cpp">iter = f.begin();
</code></pre>
<p>müsste ich auf den Zeiger auf das Element zugreifen können.</p>
<p>Doch nun müsste ich wieder dereferenzieren, wenn ich auf den Inhalt zugreifen will.</p>
<p>Irgendwie klappt das bei mir nicht. <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>Könnte jemand erklären, wie das geht?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/156279/iterator-auf-vector-mit-zeigern</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 18:58:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/156279.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 15 Aug 2006 12:04:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Iterator auf Vector mit Zeigern on Tue, 15 Aug 2006 12:04:55 GMT]]></title><description><![CDATA[<p>Es existiere ein Vector mit Zeigern.</p>
<pre><code class="language-cpp">std::vector&lt;Foo*&gt; f;

std::vector&lt;Foo*&gt;::iterator iter;
</code></pre>
<p>mit</p>
<pre><code class="language-cpp">iter = f.begin();
</code></pre>
<p>müsste ich auf den Zeiger auf das Element zugreifen können.</p>
<p>Doch nun müsste ich wieder dereferenzieren, wenn ich auf den Inhalt zugreifen will.</p>
<p>Irgendwie klappt das bei mir nicht. <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>Könnte jemand erklären, wie das geht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117529</guid><dc:creator><![CDATA[sly]]></dc:creator><pubDate>Tue, 15 Aug 2006 12:04:55 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator auf Vector mit Zeigern on Tue, 15 Aug 2006 12:06:56 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">**iter
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1117530</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117530</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 15 Aug 2006 12:06:56 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator auf Vector mit Zeigern on Tue, 15 Aug 2006 12:07:49 GMT]]></title><description><![CDATA[<p>Hallo</p>
<pre><code class="language-cpp">(*iter).function(x);
// oder
iter-&gt;function(x);
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117532</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 15 Aug 2006 12:07:49 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator auf Vector mit Zeigern on Tue, 15 Aug 2006 12:17:46 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7971">@akari</a>:<br />
Bei einem boost Pointer-Container würde ich Dir recht geben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117536</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 15 Aug 2006 12:17:46 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator auf Vector mit Zeigern on Tue, 15 Aug 2006 12:36:09 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ja sorry, muß natürlich so aussehen</p>
<pre><code class="language-cpp">class foo
{
  public :

    void dosomething();
};

std::vector&lt;foo*&gt; f;
std::vector&lt;foo*&gt;::iterator iter;
...
iter = f.begin();
(*iter)-&gt;dosomething();
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117556</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 15 Aug 2006 12:36:09 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator auf Vector mit Zeigern on Tue, 15 Aug 2006 18:39:46 GMT]]></title><description><![CDATA[<p>Okay, soweit verstanden. Nun will ich in diesem Array einen Wert suchen, mit find aus algorithm.h</p>
<p>Die Klasse Foo sei erweitert:</p>
<pre><code class="language-cpp">//Foo.h
class Foo
{
      private:
              int m_x;
      public:
             Foo(int x) :m_x(x) {}
             void getX()
             {
                  return m_x;
             }
             friend bool operator&lt;(const Foo&amp; left, const Foo&amp; right);
};

//Foo.cpp
#include &quot;Foo.h&quot;

bool operator&lt;(const Foo&amp; left, const Foo&amp; right)
{
    return left.m_x &lt; right.m_x;   
}
</code></pre>
<p>Wie muss ich nun richtig die Parameter für find übergeben?<br />
Wenn ich es so mache:</p>
<pre><code class="language-cpp">main()
{
std::vector&lt;Foo*&gt; array;
Foo* f1 = new Foo(1);
Foo* f2 = new Foo(2);
array.push_back(f1);
array.push_back(f2);

std::vector&lt;Foo*&gt;::iterator iter;
iter = find(array.begin(), array.end(), 2);

if  (iter != array.end())
{
    std:: cout &lt;&lt; (*iter)-&gt;getX();
}

}
</code></pre>
<p>..Dann bekomme ich Compiler-Fehler:</p>
<p>ISO C++ forbids comparison between pointer and integer<br />
instantiated from `_InputIterator std::find(_InputIterator, _InputIterator, const _Tp&amp;) [with _InputIterator = __gnu_cxx::__normal_iterator&lt;Foo**, std::vector&lt;Foo*, std::allocator&lt;Foo*&gt; &gt; &gt;, _Tp = int]'</p>
<p>Oder ist der operator&lt; falsch implementiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117796</guid><dc:creator><![CDATA[sly]]></dc:creator><pubDate>Tue, 15 Aug 2006 18:39:46 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator auf Vector mit Zeigern on Tue, 15 Aug 2006 19:32:28 GMT]]></title><description><![CDATA[<p>Der Algorithmus find sucht genau den übergebenen Wert in dem angegebenen Bereich, also musst Du ihm ein Foo* übergeben. Der operator&lt; wird dafür übrigens in keiner Weise benötigt. Wenn Du zwei Foo-Objekte auf Gleichheit prüfen willst, braucht die Klasse Foo einen operator== und Du musst (z.B.) find_if mit einem Funktor verwenden. Beispiel (ungetestet und nicht optimal):</p>
<pre><code class="language-cpp">struct is_my_object
{
  is_my_object( int x ): vergleichsobjekt( x ) {}
  bool operator()( Foo* other ) { return vergleichsobjekt == *other; }
  Foo vergleichsobjekt;
};

/* ... */
iter = find_if( array.begin(), array.end(), is_my_object( 2 ) );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1117823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117823</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 15 Aug 2006 19:32:28 GMT</pubDate></item><item><title><![CDATA[Reply to Iterator auf Vector mit Zeigern on Tue, 15 Aug 2006 21:09:29 GMT]]></title><description><![CDATA[<p>Mhm, ich glaube ich verstehe das Prinzip.</p>
<p>Ich bin grad nur am Überlegen, ob das mit dem Funktor für mein Problem nicht ein bisschen overhead ist und ich es nicht einfacher ohne Verwendung der STL händisch ausprogrammiere (mit etwas schlechterer Laufzeit wahrscheinlich, was aber in meinem Fall nicht von belang wäre)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1117887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1117887</guid><dc:creator><![CDATA[sly]]></dc:creator><pubDate>Tue, 15 Aug 2006 21:09:29 GMT</pubDate></item></channel></rss>