<?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[Standardcontainer für rohen Speicher]]></title><description><![CDATA[<p>Hallo!</p>
<p>Welchen Standardcontainer nutzt ihr, wenn es einfach um &quot;rohen&quot; Speicher geht, der in einem Schritt angefordert wird? vector?<br />
Oder nutzt ihr hier noch new?</p>
<p>Und verlasst ihr euch auf solche Optimierungen oder übergebt ihr den vector als Referenz?</p>
<pre><code class="language-cpp">std::vector&lt;char&gt; foo() // äquivalent zu void foo(std::vector&lt;char&gt;&amp; v), v.resize() ?
{
  std::vector&lt;char&gt; v(1234567);
  // ...
  return v;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/292490/standardcontainer-für-rohen-speicher</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 00:14:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/292490.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 11 Sep 2011 09:33:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Sun, 11 Sep 2011 09:33:37 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Welchen Standardcontainer nutzt ihr, wenn es einfach um &quot;rohen&quot; Speicher geht, der in einem Schritt angefordert wird? vector?<br />
Oder nutzt ihr hier noch new?</p>
<p>Und verlasst ihr euch auf solche Optimierungen oder übergebt ihr den vector als Referenz?</p>
<pre><code class="language-cpp">std::vector&lt;char&gt; foo() // äquivalent zu void foo(std::vector&lt;char&gt;&amp; v), v.resize() ?
{
  std::vector&lt;char&gt; v(1234567);
  // ...
  return v;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2117810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117810</guid><dc:creator><![CDATA[Container]]></dc:creator><pubDate>Sun, 11 Sep 2011 09:33:37 GMT</pubDate></item><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Sun, 11 Sep 2011 09:46:52 GMT]]></title><description><![CDATA[<p>1. Was hast du vor?<br />
2. Welchen Vorteil sollte new[] gegenüber vector haben? Das hat nur Nachteile.<br />
3. Zu den Referenzen: Was soll das werden? Was hast du vor? Die beiden Varianten machen sehr unterschiedliche Dinge.</p>
<p>edit: Ach jetzt verstehe ich was du meinst (oder eben nicht, siehe oben). Ich dachte schon, du wolltest Refernzen auf lokale Objekte zurückgeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117811</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 11 Sep 2011 09:46:52 GMT</pubDate></item><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Sun, 11 Sep 2011 09:49:28 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>1. Was hast du vor?</p>
</blockquote>
<p>Ich habe eine Funktion die relativ große Dateien ausliest (0.5 - 25 MB) und suche jetzt nach dem besten Interface dafür.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>2. Welchen Vorteil sollte new[] gegenüber vector haben? Das hat nur Nachteile.</p>
</blockquote>
<p>Ok, gut. Deshalb fragte ich, könnte ja sein, dass vector da irgendetwas verlangsamt oder so. Das ist aber schneinbar trivial?[/quote]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117813</guid><dc:creator><![CDATA[Container]]></dc:creator><pubDate>Sun, 11 Sep 2011 09:49:28 GMT</pubDate></item><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Sun, 11 Sep 2011 10:06:43 GMT]]></title><description><![CDATA[<p>Container schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>1. Was hast du vor?</p>
</blockquote>
<p>Ich habe eine Funktion die relativ große Dateien ausliest (0.5 - 25 MB) und suche jetzt nach dem besten Interface dafür.</p>
</blockquote>
<p>Und dies hat genau WAS mit rohem Speicher zu tun? Irgendeine Interpretation der Daten muss es doch geben, sonst bräuchtest du sie doch gar nicht einlesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117819</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 11 Sep 2011 10:06:43 GMT</pubDate></item><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Sun, 11 Sep 2011 10:09:12 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Und dies hat genau WAS mit rohem Speicher zu tun? Irgendeine Interpretation der Daten muss es doch geben, sonst bräuchtest du sie doch gar nicht einlesen.</p>
</blockquote>
<p>Ich lese ein Bild ein. Also ein kleiner Teil der Daten wird eh einzeln ausgelesen, der Header halt. Danach kommen die Farbwerte, die muss ich einfach irgendwie in den Speicher stopfen, das war's.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117820</guid><dc:creator><![CDATA[Container]]></dc:creator><pubDate>Sun, 11 Sep 2011 10:09:12 GMT</pubDate></item><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Sun, 11 Sep 2011 10:25:15 GMT]]></title><description><![CDATA[<p>Container schrieb:</p>
<blockquote>
<p>Danach kommen die Farbwerte, die muss ich einfach irgendwie in den Speicher stopfen, das war's.</p>
</blockquote>
<p>Nö, die wirst du nicht einfach nur in den Speicher stopfen wollen, sondern später sicherlich noch weiterverarbeiten. Sonst bräuchtest du sie garnicht erst einlesen.<br />
Wie werden sie also weiterverarbeitet? Davon hängt ab, wie sie abgelegt werden sollten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117824</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sun, 11 Sep 2011 10:25:15 GMT</pubDate></item><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Sun, 11 Sep 2011 10:27:59 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Container schrieb:</p>
<blockquote>
<p>Danach kommen die Farbwerte, die muss ich einfach irgendwie in den Speicher stopfen, das war's.</p>
</blockquote>
<p>Nö, die wirst du nicht einfach nur in den Speicher stopfen wollen, sondern später sicherlich noch weiterverarbeiten. Sonst bräuchtest du sie garnicht erst einlesen.<br />
Wie werden sie also weiterverarbeitet? Davon hängt ab, wie sie abgelegt werden sollten.</p>
</blockquote>
<p>Die werden in den Video-Ram geschrieben und dann wieder gelöscht. Und im Video-Ram wird da auch nicht viel mehr mit gemacht, als einfach an bestimmten Stellen auf den Bildschirm kopiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117825</guid><dc:creator><![CDATA[Container]]></dc:creator><pubDate>Sun, 11 Sep 2011 10:27:59 GMT</pubDate></item><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Sun, 11 Sep 2011 10:31:02 GMT]]></title><description><![CDATA[<p>Also technisch gesehen, ist dein Beispiel völlig i.O. Du legst einen sequenziellen Speicherbereich an (das garantiert vector), und füllst ihn in deiner Funktion. Und dann gibst du den Speicherbereich zurück, als Value-Objekt.</p>
<p>Im optimalen Fall macht der Compiler keine Kopie, schau mal nach RVO (Return Value Optimazation).</p>
<p>Wenn du sicher gehen willst, das keine Kopie entsteht, machst du das so, das du den Aufrufer einen Vector übergeben lässt:</p>
<pre><code class="language-cpp">void foo(std::vector&lt;char&gt; &amp;data)
{
  // data füllen
}
</code></pre>
<p>Oder du kannst auch einen Pointer bzw. besser Smartpointer zurück geben:</p>
<pre><code class="language-cpp">std::tr1::shared_ptr&lt;std::vector&lt;char&gt;&gt; foo() 
{
  std::vector&lt;char&gt; data(1234567);
  // data füllen
  return std::tr1::shared_ptr&lt;std::vector&lt;char&gt;&gt; data_p(v);
}
</code></pre>
<p>Dann braucht sich der Aufrufer gar keine Gedanken machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117826</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Sun, 11 Sep 2011 10:31:02 GMT</pubDate></item><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Sun, 11 Sep 2011 11:56:01 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">std::tr1::shared_ptr&lt;std::vector&lt;char&gt;&gt; foo() 
{
  std::vector&lt;char&gt; data(1234567);
  // data füllen
  return std::tr1::shared_ptr&lt;std::vector&lt;char&gt;&gt; data_p(v);
}
</code></pre>
<p>Du hast jeweils in Z. 1 und 5 die angle brackets falsch gesetzt (das sind Eingabe-streams).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117848</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 11 Sep 2011 11:56:01 GMT</pubDate></item><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Sun, 11 Sep 2011 12:07:06 GMT]]></title><description><![CDATA[<p>Hacker schrieb:</p>
<blockquote>
<pre><code class="language-cpp">std::tr1::shared_ptr&lt;std::vector&lt;char&gt;&gt; foo() 
{
  std::vector&lt;char&gt; data(1234567);
  // data füllen
  return std::tr1::shared_ptr&lt;std::vector&lt;char&gt;&gt; data_p(v);
}
</code></pre>
<p>Du hast jeweils in Z. 1 und 5 die angle brackets falsch gesetzt (das sind Eingabe-streams).</p>
</blockquote>
<p>Mein Compiler schluckt die problemlos <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>
<p>Übrigens sind das keine Eingabe-Streams, es ist einfach der &gt;&gt; Operator.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117854</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 11 Sep 2011 12:07:06 GMT</pubDate></item><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Sun, 11 Sep 2011 12:19:10 GMT]]></title><description><![CDATA[<p>Sorry, du hast recht, das ist ein Operator.</p>
<p>Und übrigens, mein Compiler schluckt es nicht.<br />
Besser ist also, gleich die sicherere Variante zu nehmen, auch wenn es bei manchen Compilern wegoptimiert wird.</p>
<p>Error:<br />
D:\Eigene Dateien\C++ PROGRAMMS\Temp.cxx|8|error: '&gt;&gt;' should be '&gt; &gt;' within a nested template argument list|</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117860</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 11 Sep 2011 12:19:10 GMT</pubDate></item><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Sun, 11 Sep 2011 12:25:40 GMT]]></title><description><![CDATA[<p>Ist in C++11 so erlaubt: <a href="http://www2.research.att.com/~bs/C++0xFAQ.html#brackets" rel="nofollow">http://www2.research.att.com/~bs/C++0xFAQ.html#brackets</a></p>
<p>D.h., dein Compiler unterstützt dieses Feature einfach nur noch nicht (oder es muss explizit aktiviert werden) <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/2117863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117863</guid><dc:creator><![CDATA[c++0x]]></dc:creator><pubDate>Sun, 11 Sep 2011 12:25:40 GMT</pubDate></item><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Sun, 11 Sep 2011 13:19:35 GMT]]></title><description><![CDATA[<p>Ich habe mir so etwas ähnliches wie eine Iterator-Abstraktion für Rastergrafiken gebaut. Eine Bildladeroutine sieht dann in etwa so aus:</p>
<pre><code class="language-cpp">template&lt;class Sink&gt;
auto bildformatxyz_load(char const* filename, Sink sink)
-&gt; decltype(sink(0,0))
{
  // header lesen...
  const long width  = ...;
  const long height = ...;
  auto const navigator = sink(width,height);
  auto const stepx = navigator.make_offset(1,0);
  for (long y=0; y&lt;height; ++y) {
    // Zeile irgendwie einlesen -&gt; puffer
    auto locator = navigator.make_locator(0,y);
    for (long x=0; x&lt;width; ++x) {
      *locator = puffer[x];
      locator += stepx;
    }
  }
  return navigator;
}
</code></pre>
<p>Konzept &quot;Navigator&quot; (ähnlich wie ein Iterator-Paar):<br />
- hat Referenzsemantik<br />
- weiß, wie groß ein Raster ist<br />
- weiß, wie man es navigiert<br />
- kann &quot;Lokators&quot; und &quot;Offsets&quot; erzeugen.</p>
<p>Konzept &quot;Locator&quot; (ähnlich wie ein Iterator):<br />
- zeigt auf ein Element eines Rasters<br />
- Zugriff per Dereferenzierung<br />
- unterstützt + und - im Zusammenhang mit Offsets</p>
<p>Konzept &quot;Offset&quot; (ähnlich wie difference_type):<br />
- relative Raster-Koordinate</p>
<p>Einfaches Beispiel für ein lineares Speicherlayout</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class linear_navigator
{
public:
  typedef typename std::remove_const&lt;T&gt;::type value_type;
  typedef T* locator_type;
  typedef std::diff_t offset_type;

  linear_navigator();

  linear_navigator(T* base, long width, long height
    std::diff_t stepx, std::diff_t stepy);

  offset_type make_offset(long x, long y) const {
    return stepx_*x + stepy_*y;
  }

  locator_type make_locator(long x, long y) const {
    return base_ + make_offset(x,y);
  }

  long width() const {return width_;}
  long height() const {return height_;}

private:
  T* base_;
  long width_, height_;
  std::diff_t stepx_, stepy_;
};
</code></pre>
<p>Und der Aufruf könnte so aussehen:</p>
<pre><code class="language-cpp">std::vector&lt;int&gt; graylevels;
auto navi = bildformatxyz_load(filename,[&amp;](long w, long h)-&gt;linear_navigator&lt;int&gt;{
  const long numelems = w*h;
  graylevels.resize(numelems);
  return {&amp;graylevels.front(),w,h,1,w};
});
cout &lt;&lt; navi.width() &lt;&lt; endl;
cout &lt;&lt; navi.height() &lt;&lt; endl;
</code></pre>
<p>wobei man den vektor für ein Raster selbst kapseln kann und dann so etwas schreiben kann:</p>
<pre><code class="language-cpp">raster&lt;int&gt; graylevels;
bildformatxyz_load(filename,into(graylevels));
cout &lt;&lt; graylevels.width() &lt;&lt; endl;
cout &lt;&lt; graylevels.height() &lt;&lt; endl;
</code></pre>
<p>Vielleicht findet das ja noch jemand anders praktisch so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117876</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 11 Sep 2011 13:19:35 GMT</pubDate></item><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Sun, 11 Sep 2011 15:38:23 GMT]]></title><description><![CDATA[<p>c++0x schrieb:</p>
<blockquote>
<p>D.h., dein Compiler unterstützt dieses Feature einfach nur noch nicht (oder es muss explizit aktiviert werden) <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>Kennst du (oder irgendwer sonst) ein Flag o. so, mit dem dass beim GNU GCC ginge... ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117938</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 11 Sep 2011 15:38:23 GMT</pubDate></item><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Sun, 11 Sep 2011 16:00:58 GMT]]></title><description><![CDATA[<p>Container schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Container schrieb:</p>
<blockquote>
<p>Danach kommen die Farbwerte, die muss ich einfach irgendwie in den Speicher stopfen, das war's.</p>
</blockquote>
<p>Nö, die wirst du nicht einfach nur in den Speicher stopfen wollen, sondern später sicherlich noch weiterverarbeiten. Sonst bräuchtest du sie garnicht erst einlesen.<br />
Wie werden sie also weiterverarbeitet? Davon hängt ab, wie sie abgelegt werden sollten.</p>
</blockquote>
<p>Die werden in den Video-Ram geschrieben und dann wieder gelöscht. Und im Video-Ram wird da auch nicht viel mehr mit gemacht, als einfach an bestimmten Stellen auf den Bildschirm kopiert.</p>
</blockquote>
<p>Falls du das mehrmals pro Sekunde machst, solltest du nicht immer neuen Speicher anfordern, sondern den gleichen verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117946</guid><dc:creator><![CDATA[KeepYourSelf]]></dc:creator><pubDate>Sun, 11 Sep 2011 16:00:58 GMT</pubDate></item><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Sun, 11 Sep 2011 16:10:00 GMT]]></title><description><![CDATA[<p>Hacker schrieb:</p>
<blockquote>
<p>c++0x schrieb:</p>
<blockquote>
<p>D.h., dein Compiler unterstützt dieses Feature einfach nur noch nicht (oder es muss explizit aktiviert werden) <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>Kennst du (oder irgendwer sonst) ein Flag o. so, mit dem dass beim GNU GCC ginge... ?</p>
</blockquote>
<p>Versuch mal -std=c++0x</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117948</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 11 Sep 2011 16:10:00 GMT</pubDate></item><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Sun, 11 Sep 2011 16:10:43 GMT]]></title><description><![CDATA[<p>--std=c++0x</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117949</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 11 Sep 2011 16:10:43 GMT</pubDate></item><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Mon, 12 Sep 2011 15:24:30 GMT]]></title><description><![CDATA[<p>Ja, geht - Danke! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118325</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 12 Sep 2011 15:24:30 GMT</pubDate></item><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Mon, 12 Sep 2011 15:30:25 GMT]]></title><description><![CDATA[<p>Container schrieb:</p>
<blockquote>
<p>Hallo!</p>
<p>Welchen Standardcontainer nutzt ihr, wenn es einfach um &quot;rohen&quot; Speicher geht, der in einem Schritt angefordert wird? vector?</p>
</blockquote>
<p>Ja, vector&lt;char&gt; bzw. manchmal vector&lt;unsigned char&gt;.</p>
<blockquote>
<p>Und verlasst ihr euch auf solche Optimierungen oder übergebt ihr den vector als Referenz?</p>
</blockquote>
<p>Wenn die Funktion in performance-kritischen Abschnitten zum Einsatz kommt, dann übergebe ich Referenzen.<br />
Die Kopie für's return kann zwar meist wegoptimiert werden, aber was immer bleibt ist dass der vector in der Funktion 1x neu angelegt wird.</p>
<p>Wenn man dagegen eine Referenz auf einen bestehenden vector übergibt, dann kann der aufrufende Programmteil diesen &quot;recyclen&quot;. Das kann einiges sparen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118326</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 12 Sep 2011 15:30:25 GMT</pubDate></item><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Mon, 12 Sep 2011 15:33:17 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/24868">@krümelkacker</a><br />
Gibt es wirklich Fälle wo &quot;stepx_&quot; != 1 wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118327</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 12 Sep 2011 15:33:17 GMT</pubDate></item><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Tue, 13 Sep 2011 05:05:59 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/24868">@krümelkacker</a><br />
Gibt es wirklich Fälle wo &quot;stepx_&quot; != 1 wird?</p>
</blockquote>
<p>Sicher. Anderes Speicherlayout (mit stepy_==1), Rotation um 90°, Unterabtastung, ...</p>
<pre><code class="language-cpp">raster&lt;int&gt; r = ...;
auto nav2 = rotate90(r.all());
auto nav3 = subsampleby2(r.all());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2118517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118517</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 13 Sep 2011 05:05:59 GMT</pubDate></item><item><title><![CDATA[Reply to Standardcontainer für rohen Speicher on Tue, 13 Sep 2011 11:16:53 GMT]]></title><description><![CDATA[<p>OK, wenn man diese Operationen/Fälle auch unterstützen will/muss, dann wird stepx_ natürlich != 1.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118655</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 13 Sep 2011 11:16:53 GMT</pubDate></item></channel></rss>