<?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[Mehrdimensionale Polynome in set unterbringen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab folgendes Problem: Ich will eine Menge von mehrdimenseionale Polynomen in C++ modellieren und in einer Klasse kapseln. Wichtig dabei ist vorallem die Mengeneingeschaft, dass jedes Polynom entweder genau einmal in der Menge ist oder eben nicht. Dazu habe ich mir set aus der STL angesehen, welches die Mengeneigenschaft ja mit einem RB-Baum realisiert, aber dafür eine Ordnung vorraussetzt.</p>
<p>Die Polynome haben auch eine Ordnung, der ich mich von einer anderen Stelle aus dem Projekt bedienen kann:</p>
<pre><code class="language-cpp">struct ex_is_lesseq_deggrlex : public ex_is_lesseq
{
    ex_is_lesseq_deggrlex(const list&lt;symbol&gt;&amp; variables) : ex_is_lesseq(variables)
    {}

...

    bool operator() (const ex &amp;a, const ex &amp;b) const
    {
...
</code></pre>
<p>Wie man sieht ist die Ordnung von der Liste der benutzen Symbole in den Polynomen abhängig.</p>
<p>Jetzt wollte ich in meiner PolynomMengen-Klasse set ungefähr so benutzen:</p>
<pre><code class="language-cpp">set&lt;MultivariatePolynomial, ex_is_lesseq_deggrlex&gt; Elements;
</code></pre>
<p>Das geht natürlich nicht, weil die Liste der Symbole noch nicht ermittelt ist.</p>
<pre><code class="language-cpp">struct ex_is_lesseq_deggrlex meineOrdnung;
set&lt;MultivariatePolynomial, meineOrdnung&gt; Elements;
</code></pre>
<p>Klappt natürlich auch nicht.</p>
<p>Der Konstruktor wäre irgendwie von der Art:</p>
<pre><code class="language-cpp">MultiPolynomialSet (list&lt;MultivariatePolynomial&gt;);
</code></pre>
<p>Der müsste zunächst die Liste nach symbolen durchsuchen, um dann nacher ein set zu deklarieren mit der entsprechenden Ordnung. Aber wie?</p>
<p>Irgendwelche Ideen?</p>
<p>Vielen Dank</p>
<p>Joachim</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/289195/mehrdimensionale-polynome-in-set-unterbringen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 07:35:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/289195.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 29 Jun 2011 20:25:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mehrdimensionale Polynome in set unterbringen on Wed, 29 Jun 2011 20:25:33 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab folgendes Problem: Ich will eine Menge von mehrdimenseionale Polynomen in C++ modellieren und in einer Klasse kapseln. Wichtig dabei ist vorallem die Mengeneingeschaft, dass jedes Polynom entweder genau einmal in der Menge ist oder eben nicht. Dazu habe ich mir set aus der STL angesehen, welches die Mengeneigenschaft ja mit einem RB-Baum realisiert, aber dafür eine Ordnung vorraussetzt.</p>
<p>Die Polynome haben auch eine Ordnung, der ich mich von einer anderen Stelle aus dem Projekt bedienen kann:</p>
<pre><code class="language-cpp">struct ex_is_lesseq_deggrlex : public ex_is_lesseq
{
    ex_is_lesseq_deggrlex(const list&lt;symbol&gt;&amp; variables) : ex_is_lesseq(variables)
    {}

...

    bool operator() (const ex &amp;a, const ex &amp;b) const
    {
...
</code></pre>
<p>Wie man sieht ist die Ordnung von der Liste der benutzen Symbole in den Polynomen abhängig.</p>
<p>Jetzt wollte ich in meiner PolynomMengen-Klasse set ungefähr so benutzen:</p>
<pre><code class="language-cpp">set&lt;MultivariatePolynomial, ex_is_lesseq_deggrlex&gt; Elements;
</code></pre>
<p>Das geht natürlich nicht, weil die Liste der Symbole noch nicht ermittelt ist.</p>
<pre><code class="language-cpp">struct ex_is_lesseq_deggrlex meineOrdnung;
set&lt;MultivariatePolynomial, meineOrdnung&gt; Elements;
</code></pre>
<p>Klappt natürlich auch nicht.</p>
<p>Der Konstruktor wäre irgendwie von der Art:</p>
<pre><code class="language-cpp">MultiPolynomialSet (list&lt;MultivariatePolynomial&gt;);
</code></pre>
<p>Der müsste zunächst die Liste nach symbolen durchsuchen, um dann nacher ein set zu deklarieren mit der entsprechenden Ordnung. Aber wie?</p>
<p>Irgendwelche Ideen?</p>
<p>Vielen Dank</p>
<p>Joachim</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2086307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2086307</guid><dc:creator><![CDATA[PolynomJo]]></dc:creator><pubDate>Wed, 29 Jun 2011 20:25:33 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionale Polynome in set unterbringen on Wed, 29 Jun 2011 21:30:25 GMT]]></title><description><![CDATA[<p>Wissen die ex-Objekte nicht die Liste ihrer eigenen Symbole?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2086328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2086328</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Wed, 29 Jun 2011 21:30:25 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionale Polynome in set unterbringen on Wed, 29 Jun 2011 21:39:40 GMT]]></title><description><![CDATA[<p>Michael E. schrieb:</p>
<blockquote>
<p>Wissen die ex-Objekte nicht die Liste ihrer eigenen Symbole?</p>
</blockquote>
<p>Nope. Es handelt sich bei den ex-Objekten überings um ex aus GiNaC.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2086331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2086331</guid><dc:creator><![CDATA[PolynomJo]]></dc:creator><pubDate>Wed, 29 Jun 2011 21:39:40 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionale Polynome in set unterbringen on Wed, 29 Jun 2011 21:43:30 GMT]]></title><description><![CDATA[<p>In welcher Beziehung stehen denn die list&lt;symbol&gt;, die dein Funktor vergleicht, mit den Polynomen, die du in der set&lt;&gt; unterbringen willst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2086333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2086333</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 29 Jun 2011 21:43:30 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionale Polynome in set unterbringen on Wed, 29 Jun 2011 21:50:27 GMT]]></title><description><![CDATA[<p>PolynomJo schrieb:</p>
<blockquote>
<p>Michael E. schrieb:</p>
<blockquote>
<p>Wissen die ex-Objekte nicht die Liste ihrer eigenen Symbole?</p>
</blockquote>
<p>Nope. Es handelt sich bei den ex-Objekten überings um ex aus GiNaC.</p>
</blockquote>
<p>Kenn ich nicht, aber in der Doku steht eine Struktur ex_is_less, die den operator() überladen hat. Kannst du diese Struktur benutzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2086335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2086335</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Wed, 29 Jun 2011 21:50:27 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionale Polynome in set unterbringen on Thu, 30 Jun 2011 15:34:28 GMT]]></title><description><![CDATA[<p>Michael E. schrieb:</p>
<blockquote>
<p>PolynomJo schrieb:</p>
<blockquote>
<p>Michael E. schrieb:</p>
<blockquote>
<p>Wissen die ex-Objekte nicht die Liste ihrer eigenen Symbole?</p>
</blockquote>
<p>Nope. Es handelt sich bei den ex-Objekten überings um ex aus GiNaC.</p>
</blockquote>
<p>Kenn ich nicht, aber in der Doku steht eine Struktur ex_is_less, die den operator() überladen hat. Kannst du diese Struktur benutzen?</p>
</blockquote>
<p>Oh! Ja vielen Dank! Das müsste klappen. <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="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2086725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2086725</guid><dc:creator><![CDATA[PolynomJo]]></dc:creator><pubDate>Thu, 30 Jun 2011 15:34:28 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionale Polynome in set unterbringen on Thu, 30 Jun 2011 20:47:31 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;ginac/ginac.h&gt;
#include &lt;iterator&gt;

namespace GiNaC
{

template&lt;class monomialOrdering&gt; class MultivariatePolynomialSet2
{
public:
	MultivariatePolynomialSet2();

	bool isEmpty() const;

	int size() const;

private:
	set&lt;MultivariatePolynomial&lt;monomialOrdering&gt;, ex_is_less&gt; mElements;

};

template&lt;class monomialOrdering&gt; inline GiNaC::MultivariatePolynomialSet2&lt;
		monomialOrdering&gt;::MultivariatePolynomialSet2()
{
}

template&lt;class monomialOrdering&gt; inline bool GiNaC::MultivariatePolynomialSet2&lt;
		monomialOrdering&gt;::isEmpty() const
{
	return mElements.emtpy();
}

template&lt;class monomialOrdering&gt; inline int GiNaC::MultivariatePolynomialSet2&lt;
		monomialOrdering&gt;::size() const
{
	return mElements.size();
}
}
</code></pre>
<p>Ich versteh es immer noch nciht <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>Jetzt bekomme ich, wenn ich z.B. isEmpty aufrufe folgendes:</p>
<pre><code>example_set.cpp: In function ‘int main(int, char**)’:
example_set.cpp:59: error: request for member ‘isEmpty’ in ‘T’, which is of non-class type ‘GiNaC::MultivariatePolynomialSet2&lt;GiNaC::ex_is_lesseq_deggrlex&gt;()’
</code></pre>
<p>Dabei müsste das nach <a href="http://www.cplusplus.com/reference/stl/set/set/" rel="nofollow">http://www.cplusplus.com/reference/stl/set/set/</a> (Zeile 24) so funktionieren oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2086887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2086887</guid><dc:creator><![CDATA[PolynomJo]]></dc:creator><pubDate>Thu, 30 Jun 2011 20:47:31 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrdimensionale Polynome in set unterbringen on Thu, 30 Jun 2011 20:50:46 GMT]]></title><description><![CDATA[<p>Dann solltest du auch mal zeigen, wie dieser Aufruf aussieht, der den Fehler verursacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2086890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2086890</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 30 Jun 2011 20:50:46 GMT</pubDate></item></channel></rss>