<?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[Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator +=]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich wollte gerade:</p>
<pre><code class="language-cpp">array&lt;double,3&gt; &amp; array&lt;double,3&gt;::operator +=(const array&lt;double,3&gt;&amp; b)
</code></pre>
<p>Geht irgendwie nicht. Hat es einen Grund?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284958/warum-gibt-es-kein-std-tr1-array-lt-t-gt-operator</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 16:08:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284958.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 11 Apr 2011 21:42:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Mon, 11 Apr 2011 21:42:02 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich wollte gerade:</p>
<pre><code class="language-cpp">array&lt;double,3&gt; &amp; array&lt;double,3&gt;::operator +=(const array&lt;double,3&gt;&amp; b)
</code></pre>
<p>Geht irgendwie nicht. Hat es einen Grund?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047774</guid><dc:creator><![CDATA[oparator]]></dc:creator><pubDate>Mon, 11 Apr 2011 21:42:02 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Mon, 11 Apr 2011 21:57:05 GMT]]></title><description><![CDATA[<p>Gegenfrage: Was soll der denn machen? Mir ist das nämlich nicht so ganz klar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047778</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 11 Apr 2011 21:57:05 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Mon, 11 Apr 2011 22:01:46 GMT]]></title><description><![CDATA[<p>möglicher weise möchte er sowas:</p>
<p>std::array&lt;double, 3&gt; a, b;<br />
a += b;</p>
<p>-&gt;</p>
<p>a[0] += b[0]<br />
a[1] += b[1]<br />
a[2] += b[2]</p>
<p>also, dass alle elemente vom left hand side array mit den elementen des right hand side arrays addiert werden.<br />
was logisch nur geht, wenn beide Arrays die gleiche Größe haben, was aber in seinem Beispiel durchaus gegeben ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047780</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Mon, 11 Apr 2011 22:01:46 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Mon, 11 Apr 2011 22:02:07 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Gegenfrage: Was soll der denn machen? Mir ist das nämlich nicht so ganz klar.</p>
</blockquote>
<p>Es sollte ohne code bloat so etwas funktionieren.</p>
<pre><code class="language-cpp">array&lt;double,3&gt; a,b;
...
// Daten in a und b füllen.
...
a += b;
a -= b;
a *= a;
</code></pre>
<p>Man sollte damit also einfach addieren multiplizieren, quadrieren und subtrahieren können.<br />
Gibt es Einwände warum man so etwas nicht machen sollte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047781</guid><dc:creator><![CDATA[oparator]]></dc:creator><pubDate>Mon, 11 Apr 2011 22:02:07 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Mon, 11 Apr 2011 22:05:02 GMT]]></title><description><![CDATA[<p>Weil es das alles schon anderswo gibt:<br />
<a href="http://www.cplusplus.com/reference/std/valarray/" rel="nofollow">http://www.cplusplus.com/reference/std/valarray/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047782</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 11 Apr 2011 22:05:02 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Mon, 11 Apr 2011 22:12:40 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Weil es das alles schon anderswo gibt:<br />
<a href="http://www.cplusplus.com/reference/std/valarray/" rel="nofollow">http://www.cplusplus.com/reference/std/valarray/</a></p>
</blockquote>
<p>ok danke. das hilft super weiter.</p>
<p>Ist dieses Array synchronisiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047785</guid><dc:creator><![CDATA[oparator]]></dc:creator><pubDate>Mon, 11 Apr 2011 22:12:40 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Mon, 11 Apr 2011 22:16:19 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Weil es das alles schon anderswo gibt:<br />
<a href="http://www.cplusplus.com/reference/std/valarray/" rel="nofollow">http://www.cplusplus.com/reference/std/valarray/</a></p>
</blockquote>
<p>Mir fällt gerade auf dass dieses valarray keine feste Größe hat <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2047786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047786</guid><dc:creator><![CDATA[oparator]]></dc:creator><pubDate>Mon, 11 Apr 2011 22:16:19 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Tue, 12 Apr 2011 00:16:39 GMT]]></title><description><![CDATA[<p>oparator schrieb:</p>
<blockquote>
<p>Ist dieses Array synchronisiert?</p>
</blockquote>
<p>Was soll synchronisiert in dem Zusammenhang bedeuten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047802</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 12 Apr 2011 00:16:39 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Tue, 12 Apr 2011 05:55:55 GMT]]></title><description><![CDATA[<p>oparator schrieb:</p>
<blockquote>
<p>Mir fällt gerade auf dass dieses valarray keine feste Größe hat <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>
</blockquote>
<p>Dann schreib die freie Operatoren für das <code>array</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047826</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Tue, 12 Apr 2011 05:55:55 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Tue, 12 Apr 2011 07:57:23 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>oparator schrieb:</p>
<blockquote>
<p>Ist dieses Array synchronisiert?</p>
</blockquote>
<p>Was soll synchronisiert in dem Zusammenhang bedeuten?</p>
</blockquote>
<p>Thread Safe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047868</guid><dc:creator><![CDATA[oparator]]></dc:creator><pubDate>Tue, 12 Apr 2011 07:57:23 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Tue, 12 Apr 2011 08:03:26 GMT]]></title><description><![CDATA[<p>oparator schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Weil es das alles schon anderswo gibt:<br />
<a href="http://www.cplusplus.com/reference/std/valarray/" rel="nofollow">http://www.cplusplus.com/reference/std/valarray/</a></p>
</blockquote>
<p>Mir fällt gerade auf dass dieses valarray keine feste Größe hat <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>
</blockquote>
<p>Schreib einen Wrapper, der valarray implementiert.</p>
<pre><code class="language-cpp">template&lt; class T, size_t N &gt; 
class const_valarray : private valarray&lt;T&gt; {
  // bitte selbst ausfüllen
};
</code></pre>
<p>Und lasse nur die Memberfunctions zu, die das valarray nicht in der Größe ändern können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047870</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 12 Apr 2011 08:03:26 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Tue, 12 Apr 2011 08:11:39 GMT]]></title><description><![CDATA[<p>oparator schrieb:</p>
<blockquote>
<p>Geht irgendwie nicht. Hat es einen Grund?</p>
</blockquote>
<p>Davon abgesehen, warum sollte es den einen operator += für einen generischen Container geben, und wie sollte dieser interpretiert werden?</p>
<p>Ich würde nicht unbedingt mit &quot;+=&quot; zwischen zwei Containern erwarten, das die Elemente paarweise addiert werden. Genauso gut könnte man sagen das += einen Container um den Inhalt eines weiteren erweitert...</p>
<p>Zudem: Was sollte z.B. in diesem Fall passieren:</p>
<pre><code class="language-cpp">std::tr1::array a1&lt;3, person&gt; personen1;
std::tr1::array a2&lt;3, person&gt; personen2;
a1 += a2;
</code></pre>
<p>Operatoren sind nicht selten nur im konkreten Kontext sinnvoll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047877</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 12 Apr 2011 08:11:39 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Tue, 12 Apr 2011 08:58:49 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Schreib einen Wrapper, der valarray implementiert.</p>
<pre><code class="language-cpp">template&lt; class T, size_t N &gt; 
class const_valarray : private valarray&lt;T&gt; {
  // bitte selbst ausfüllen
};
</code></pre>
<p>Und lasse nur die Memberfunctions zu, die das valarray nicht in der Größe ändern können.</p>
</blockquote>
<p>Was spricht in diesem Fall für private Vererbung? Wieso nicht Aggregation?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047899</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 12 Apr 2011 08:58:49 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Tue, 12 Apr 2011 09:00:30 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Was spricht in diesem Fall für private Vererbung?</p>
</blockquote>
<p>Werden STD-Adapter nicht auch <code>private</code> Vererbt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047900</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Tue, 12 Apr 2011 09:00:30 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Tue, 12 Apr 2011 09:02:28 GMT]]></title><description><![CDATA[<p>Wonach du zu suchen scheinst ist so etwas wie <a href="http://eigen.tuxfamily.org/index.php?title=Main_Page" rel="nofollow">Eigen</a> oder <a href="http://www.boost.org/doc/libs/1_46_1/libs/numeric/ublas/doc/overview.htm" rel="nofollow">Boost.uBLAS</a> (wenn die Vektoren groß sind).</p>
<p>oparator schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>oparator schrieb:</p>
<blockquote>
<p>Ist dieses Array synchronisiert?</p>
</blockquote>
<p>Was soll synchronisiert in dem Zusammenhang bedeuten?</p>
</blockquote>
<p>Thread Safe.</p>
</blockquote>
<p>Nein. Darum musst du dich kümmern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047902</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Tue, 12 Apr 2011 09:02:28 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Tue, 12 Apr 2011 11:16:28 GMT]]></title><description><![CDATA[<p>oparator schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>oparator schrieb:</p>
<blockquote>
<p>Ist dieses Array synchronisiert?</p>
</blockquote>
<p>Was soll synchronisiert in dem Zusammenhang bedeuten?</p>
</blockquote>
<p>Thread Safe.</p>
</blockquote>
<p>Soll das ein Scherz sein?</p>
<p>Wieso sollten da irgendwas thread-safe sein?</p>
<p>Ist denn irgendwas in der SCL thread-safe - mal abgesehen von globalen Funktionen und atomic/thread/mutex/condition_variable?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047974</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 12 Apr 2011 11:16:28 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Tue, 12 Apr 2011 18:46:24 GMT]]></title><description><![CDATA[<p>Dank eurer Hilfe habe bin ich gut vorangekommen und verwende nun das valarray.</p>
<p>An einer Stelle ist mir ein Fehler? aufgefallen den ich nicht so deuten kann.</p>
<p>Hier ist der Code:</p>
<pre><code class="language-cpp">double operator [](const unsigned int &amp;b)
{
	if(b == 0)
	{
		return (this)[0][0];
	}
	else if(b == 1)
	{
		return (this)[0][1];
	}

	assert(false);

	return 0.0;
}

double distance(position2d &amp;b) const
{
	return hypot((*this)[0]-b[0],(*this)[1]-b[1]);
}
</code></pre>
<p>Ist es richtig dass der Compiler mir nicht meckert dass ich bei operator keine const &amp; zurückgebe? in der distance funktion meckert er nämlich über den const qualifier wenn ich auf b[0] zugreifen möchte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048303</guid><dc:creator><![CDATA[oparator]]></dc:creator><pubDate>Tue, 12 Apr 2011 18:46:24 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Tue, 12 Apr 2011 18:55:42 GMT]]></title><description><![CDATA[<p>oparator schrieb:</p>
<blockquote>
<p>in der distance funktion meckert er nämlich über den const qualifier wenn ich auf b[0] zugreifen möchte.</p>
</blockquote>
<p>Wenn ich es so verwende<br />
[cpp]<br />
double distance(<strong>const</strong> position3d &amp;b) const<br />
[/cpp]<br />
meckert der compiler.</p>
<pre><code>Error: no operator &quot;[]&quot; matches these operands
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2048308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048308</guid><dc:creator><![CDATA[oparator]]></dc:creator><pubDate>Tue, 12 Apr 2011 18:55:42 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Tue, 12 Apr 2011 19:01:02 GMT]]></title><description><![CDATA[<p>Klar meckert er, weil dein operator [] nicht auf const Objekte aufgerufen werden kann.</p>
<pre><code class="language-cpp">//double operator [](const unsigned int &amp;b)
double operator [](unsigned int index) const
{
// ...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2048312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048312</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 12 Apr 2011 19:01:02 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Tue, 12 Apr 2011 19:07:21 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Klar meckert er, weil dein operator [] nicht auf const Objekte aufgerufen werden kann.</p>
<pre><code class="language-cpp">//double operator [](const unsigned int &amp;b)
double operator [](unsigned int index) const
{
// ...
</code></pre>
</blockquote>
<p>Also braucht man zwei gleiche Operatoren mit const und nicht const einmal für den Zugriff einmal fürs schreiben?</p>
<pre><code class="language-cpp">double operator [](unsigned int index) const
</code></pre>
<p>Damit kann ich doch nicht</p>
<pre><code class="language-cpp">test[0] = 2.0;
</code></pre>
<p>??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048322</guid><dc:creator><![CDATA[oparator]]></dc:creator><pubDate>Tue, 12 Apr 2011 19:07:21 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Tue, 12 Apr 2011 20:16:46 GMT]]></title><description><![CDATA[<p>man macht normalerweise folgendes:</p>
<pre><code class="language-cpp">double &amp; operator[](unsigned int x) {}
const double &amp; operator(unsigned int x) const {}
</code></pre>
<p>mit dem ersten greift man drauf zu und mit dem zweiten hat man eine lvalue referenz, die man auch belegen kann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048369</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Tue, 12 Apr 2011 20:16:46 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Tue, 12 Apr 2011 20:18:02 GMT]]></title><description><![CDATA[<p>richtig, da brauchst du zwei Operatoren - der konstante liefert einen double, der &quot;normale&quot; eine Referenz (damit die Zuweisung auch funktioniert).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048371</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 12 Apr 2011 20:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to Warum gibt es kein std::tr1::array&amp;lt;T&amp;gt; operator += on Tue, 12 Apr 2011 20:20:38 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>richtig, da brauchst du zwei Operatoren - der konstante liefert einen double, der &quot;normale&quot; eine Referenz (damit die Zuweisung auch funktioniert).</p>
</blockquote>
<p>Danke an alle Helfenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048372</guid><dc:creator><![CDATA[oparator]]></dc:creator><pubDate>Tue, 12 Apr 2011 20:20:38 GMT</pubDate></item></channel></rss>