<?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[ptrdiff_t mit size_t vergleichen]]></title><description><![CDATA[<p>ich hab folgendes Problemchen: ich verwende einen Ausdruck vom Typ size_t und vergleiche ihn mit einem Ausdruck vom Typ ptrdiff_t, wonach der Compiler mir eine Warnung entgegenschleudert von wegen <code>comparison between signed and unsigned integer expressions</code> . Wie krieg ich das weg? Der fragliche Code lautet:</p>
<pre><code class="language-cpp">class X {
public:
  std::size_t Size();
  void f();
private:
  struct Impl;
  auto_ptr&lt;Impl&gt; pimpl;
};

struct X::Impl {
  std::deque&lt;TH1*&gt; histos
};

void X::f() {
  if (std::count(pimpl-&gt;histos.begin(), pimpl-&gt;histos.end(), static_cast&lt;TH1*&gt;(0)) &gt;= Size()) /*...*/
}
</code></pre>
<p>Stellt sich die Frage, warum std::count ueberhaupt eine signed integer expression zurueckgibt...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/200340/ptrdiff_t-mit-size_t-vergleichen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 04 Oct 2026 19:18:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/200340.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 13 Dec 2007 15:47:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ptrdiff_t mit size_t vergleichen on Thu, 13 Dec 2007 15:47:06 GMT]]></title><description><![CDATA[<p>ich hab folgendes Problemchen: ich verwende einen Ausdruck vom Typ size_t und vergleiche ihn mit einem Ausdruck vom Typ ptrdiff_t, wonach der Compiler mir eine Warnung entgegenschleudert von wegen <code>comparison between signed and unsigned integer expressions</code> . Wie krieg ich das weg? Der fragliche Code lautet:</p>
<pre><code class="language-cpp">class X {
public:
  std::size_t Size();
  void f();
private:
  struct Impl;
  auto_ptr&lt;Impl&gt; pimpl;
};

struct X::Impl {
  std::deque&lt;TH1*&gt; histos
};

void X::f() {
  if (std::count(pimpl-&gt;histos.begin(), pimpl-&gt;histos.end(), static_cast&lt;TH1*&gt;(0)) &gt;= Size()) /*...*/
}
</code></pre>
<p>Stellt sich die Frage, warum std::count ueberhaupt eine signed integer expression zurueckgibt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1420035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1420035</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 13 Dec 2007 15:47:06 GMT</pubDate></item><item><title><![CDATA[Reply to ptrdiff_t mit size_t vergleichen on Thu, 13 Dec 2007 18:48:29 GMT]]></title><description><![CDATA[<p>Naja notfalls einfach nach unsigned casten ...<br />
es wird ein</p>
<pre><code class="language-cpp">template &lt;class InputIterator, class T&gt;
typename iterator_traits&lt;InputIterator&gt;::difference_type count ( ForwardIterator first, ForwardIterator last, const T&amp; value );
</code></pre>
<p>=&gt;</p>
<pre><code class="language-cpp">std::iterator_traits&lt;InputIterator&gt;::difference_type
</code></pre>
<p>von std::count zurück gegeben, der Typ ist demnach Teil der struct std::iterator_traits und dann kommt es darauf an =&gt; <a href="http://www.sgi.com/tech/stl/iterator_traits.html" rel="nofollow">http://www.sgi.com/tech/stl/iterator_traits.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1420145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1420145</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 13 Dec 2007 18:48:29 GMT</pubDate></item></channel></rss>