<?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[indexOf Object in std::vector]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe einen std::vector<a href="std::string*" rel="nofollow">std::string*</a> und möchte die Position haben, an<br />
der sich der String &quot;myString&quot; steht.<br />
Muss ich per const_iterator (oder ähnlichem) durchlaufen oder gibt es ne<br />
kürzere STL-Variante?</p>
<p>Gruß,<br />
Vectorianer</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/184559/indexof-object-in-std-vector</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 17:37:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/184559.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 16 Jun 2007 15:22:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to indexOf Object in std::vector on Sat, 16 Jun 2007 15:22:23 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe einen std::vector<a href="std::string*" rel="nofollow">std::string*</a> und möchte die Position haben, an<br />
der sich der String &quot;myString&quot; steht.<br />
Muss ich per const_iterator (oder ähnlichem) durchlaufen oder gibt es ne<br />
kürzere STL-Variante?</p>
<p>Gruß,<br />
Vectorianer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1307289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307289</guid><dc:creator><![CDATA[Vectorianer]]></dc:creator><pubDate>Sat, 16 Jun 2007 15:22:23 GMT</pubDate></item><item><title><![CDATA[Reply to indexOf Object in std::vector on Sat, 16 Jun 2007 15:25:58 GMT]]></title><description><![CDATA[<p>Du musst durchiterieren da der String ja gefunden werden muss. Die Standardbibliothek bietet dazu Algorithmen an: z.B. find_if.</p>
<p>Alternativ könntest du ein Hashtable verwenden! Da müsstest du nicht zwangsläufig durch alle Einträge iterieren. Glaube TR1 stellt Hashtables zur verfügung, bin mir aber nicht sicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1307293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307293</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sat, 16 Jun 2007 15:25:58 GMT</pubDate></item><item><title><![CDATA[Reply to indexOf Object in std::vector on Sat, 16 Jun 2007 15:45:42 GMT]]></title><description><![CDATA[<p>find_if mit eigenem Prädikat! Ansonsten vergleichst du nämlich nur die Pointer.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1307306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307306</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Sat, 16 Jun 2007 15:45:42 GMT</pubDate></item><item><title><![CDATA[Reply to indexOf Object in std::vector on Sat, 16 Jun 2007 15:50:01 GMT]]></title><description><![CDATA[<p>SideWinder schrieb:</p>
<blockquote>
<p>find_if mit eigenem Prädikat! Ansonsten vergleichst du nämlich nur die Pointer.</p>
</blockquote>
<p>find_if gibts auch nur mit Prädikat <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/1307315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307315</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 16 Jun 2007 15:50:01 GMT</pubDate></item><item><title><![CDATA[Reply to indexOf Object in std::vector on Sat, 16 Jun 2007 15:50:49 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>SideWinder schrieb:</p>
<blockquote>
<p>find_if mit eigenem Prädikat! Ansonsten vergleichst du nämlich nur die Pointer.</p>
</blockquote>
<p>find_if gibts auch nur mit Prädikat <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>
</blockquote>
<p>So isses, ansonsten gibts ja find. <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/1307316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307316</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sat, 16 Jun 2007 15:50:49 GMT</pubDate></item><item><title><![CDATA[Reply to indexOf Object in std::vector on Sat, 16 Jun 2007 16:02:28 GMT]]></title><description><![CDATA[<p>Glaube SideWinder meinte, dass er nicht einfach equal_to&lt;std::string *&gt; nehmen soll weil er damit nur die Adressen vergleicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1307326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307326</guid><dc:creator><![CDATA[Konrad]]></dc:creator><pubDate>Sat, 16 Jun 2007 16:02:28 GMT</pubDate></item><item><title><![CDATA[Reply to indexOf Object in std::vector on Sat, 16 Jun 2007 16:03:18 GMT]]></title><description><![CDATA[<p>Ahh! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /> Klar, das is korrekt! <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1307327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307327</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sat, 16 Jun 2007 16:03:18 GMT</pubDate></item><item><title><![CDATA[Reply to indexOf Object in std::vector on Sat, 16 Jun 2007 16:17:17 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template &lt;typename AdaptableUnaryFuncT&gt;
struct ptr_predicate_t
{
  ptr_predicate_t( AdaptableUnaryFuncT p )
    : pred(p)
  { }

  bool operator()( typename AdaptableUnaryFuncT::argument_type const* obj ) const
  { return pred(*obj); }

  AdaptableUnaryFuncT  pred;
};

template &lt;typename AdaptableUnaryFuncT&gt;
ptr_predicate_t&lt;AdaptableUnaryFuncT&gt; ptr_predicate( AdaptableUnaryFuncT p )
{
  return ptr_predicate_t&lt;AdaptableUnaryFuncT&gt;(p);
}

std::size_t index_of( std::vector&lt;std::string*&gt; const&amp; c, std::string const&amp; s )
{
  return std::distance(
           c.begin(),
           std::find_if(
             c.begin(),
             c.end(),
             ptr_predicate(std::bind2nd(std::equal_to&lt;std::string&gt;(), s))));
}
</code></pre>
<p>Für einen <code>std::vector&lt;std::string&gt;</code> wär's natürlich einfacher <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/1307335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307335</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Sat, 16 Jun 2007 16:17:17 GMT</pubDate></item><item><title><![CDATA[Reply to indexOf Object in std::vector on Sat, 16 Jun 2007 16:33:09 GMT]]></title><description><![CDATA[<p>WTF, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1307346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307346</guid><dc:creator><![CDATA[omg]]></dc:creator><pubDate>Sat, 16 Jun 2007 16:33:09 GMT</pubDate></item><item><title><![CDATA[Reply to indexOf Object in std::vector on Sat, 16 Jun 2007 16:36:47 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">namespace bll = boost::lambda;
std::ptrdiff_t n = std::find_if(v.begin(), v.end(), *bll::_1 == s) - v.begin();
</code></pre>
<p>EDIT 3: Ja, sapperlott, is das denn so schwer für mich? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1307347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307347</guid><dc:creator><![CDATA[Mr. N]]></dc:creator><pubDate>Sat, 16 Jun 2007 16:36:47 GMT</pubDate></item></channel></rss>