<?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[problem mit erase vector]]></title><description><![CDATA[<p>SERVUS.</p>
<p>ich habe folgendes problem. ich habe mir eine eigene klasse definiert, und mit dieser klasse dann ein vektor erzeugt. nun will ich ich die erase - funktion für vektoren anwenden, was aber leider nicht funktioniert. vielleicht kann mir jemand sagen, wo der fehler liegt?<br />
hier kommt erstmal meine klasse:</p>
<pre><code class="language-cpp">class cLine
{
	public:
		vector &lt;cPoint&gt; PKT;

		cLine :: cLine ()
		{
			cPoint p;
			p.m_setpkt(0,0);
			PKT.push_back(p);
			itsBETA = 0;
			itsP = 0;
		}
		cLine :: ~cLine ()
		{}
		int m_size () const
		{return (PKT.size());};
		void m_inback (int i, int j)
		{
			cPoint p;
			p.m_setpkt(i,j);
			if (PKT.back().GetX()==0 &amp;&amp; PKT.back().GetY()==0 &amp;&amp; PKT.size()==1)
				PKT[0].m_setpkt(p.GetX(),p.GetY());
			else
				PKT.push_back(p);
		}
		void m_infront (int i, int j)
		{
			cPoint p;
			p.m_setpkt(i,j);
			if (PKT.front().GetX()==0 &amp;&amp; PKT.front().GetY()==0 &amp;&amp; PKT.size()==1)
				PKT[0].m_setpkt(p.GetX(),p.GetY());
			else
				PKT.insert(PKT.begin(),p);
		}
		cPoint m_getpkt (int i)
		{return PKT[i];}
		cPoint m_back () const
		{return (PKT.back());};
		cPoint m_front () const
		{return (PKT.front());};
		void m_clear ()
		{PKT.clear();}
		void m_setpara (double i, double j)
		{itsBETA = i;itsP = j;}
		double m_getBeta () const
		{return itsBETA;}
		double m_getP () const
		{return itsP;}

	private:
		double itsBETA;
		double itsP;
};
</code></pre>
<p>und hier meine erase-anweisung:</p>
<pre><code class="language-cpp">for (i=0;i&lt;2;i++)
{
	for (j=0;j&lt;GRID[i].size();j++)
	{
		if (dnv&gt;GRID[i][j].m_size())
			GRID[i].erase(remove (GRID[i].begin(),GRID[i].end(),GRID[i][j]));
	}
}
</code></pre>
<p>und nun die fehlermeldung:<br />
error C2678: Binaerer Operator '==' : Kein Operator definiert, der einen linksseitigen Operator vom Typ 'class cLine' akzeptiert (oder keine geeignete Konvertierung moeglich)</p>
<p>DANKE.<br />
STICK.</p>
<p>p.s.: die beiden funktionen „m_getBeta () const“ und „double m_getP () const“: kann man es irgendwie ermöglichen, die werte itsBETA und itsP in nur einer funktion zurückzugeben, also in einer art array, ohne zuvor dieses array dieser funktion zu übergeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/149887/problem-mit-erase-vector</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 12:03:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/149887.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 11 Jun 2006 05:42:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to problem mit erase vector on Sun, 11 Jun 2006 05:42:47 GMT]]></title><description><![CDATA[<p>SERVUS.</p>
<p>ich habe folgendes problem. ich habe mir eine eigene klasse definiert, und mit dieser klasse dann ein vektor erzeugt. nun will ich ich die erase - funktion für vektoren anwenden, was aber leider nicht funktioniert. vielleicht kann mir jemand sagen, wo der fehler liegt?<br />
hier kommt erstmal meine klasse:</p>
<pre><code class="language-cpp">class cLine
{
	public:
		vector &lt;cPoint&gt; PKT;

		cLine :: cLine ()
		{
			cPoint p;
			p.m_setpkt(0,0);
			PKT.push_back(p);
			itsBETA = 0;
			itsP = 0;
		}
		cLine :: ~cLine ()
		{}
		int m_size () const
		{return (PKT.size());};
		void m_inback (int i, int j)
		{
			cPoint p;
			p.m_setpkt(i,j);
			if (PKT.back().GetX()==0 &amp;&amp; PKT.back().GetY()==0 &amp;&amp; PKT.size()==1)
				PKT[0].m_setpkt(p.GetX(),p.GetY());
			else
				PKT.push_back(p);
		}
		void m_infront (int i, int j)
		{
			cPoint p;
			p.m_setpkt(i,j);
			if (PKT.front().GetX()==0 &amp;&amp; PKT.front().GetY()==0 &amp;&amp; PKT.size()==1)
				PKT[0].m_setpkt(p.GetX(),p.GetY());
			else
				PKT.insert(PKT.begin(),p);
		}
		cPoint m_getpkt (int i)
		{return PKT[i];}
		cPoint m_back () const
		{return (PKT.back());};
		cPoint m_front () const
		{return (PKT.front());};
		void m_clear ()
		{PKT.clear();}
		void m_setpara (double i, double j)
		{itsBETA = i;itsP = j;}
		double m_getBeta () const
		{return itsBETA;}
		double m_getP () const
		{return itsP;}

	private:
		double itsBETA;
		double itsP;
};
</code></pre>
<p>und hier meine erase-anweisung:</p>
<pre><code class="language-cpp">for (i=0;i&lt;2;i++)
{
	for (j=0;j&lt;GRID[i].size();j++)
	{
		if (dnv&gt;GRID[i][j].m_size())
			GRID[i].erase(remove (GRID[i].begin(),GRID[i].end(),GRID[i][j]));
	}
}
</code></pre>
<p>und nun die fehlermeldung:<br />
error C2678: Binaerer Operator '==' : Kein Operator definiert, der einen linksseitigen Operator vom Typ 'class cLine' akzeptiert (oder keine geeignete Konvertierung moeglich)</p>
<p>DANKE.<br />
STICK.</p>
<p>p.s.: die beiden funktionen „m_getBeta () const“ und „double m_getP () const“: kann man es irgendwie ermöglichen, die werte itsBETA und itsP in nur einer funktion zurückzugeben, also in einer art array, ohne zuvor dieses array dieser funktion zu übergeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075380</guid><dc:creator><![CDATA[stick_thai]]></dc:creator><pubDate>Sun, 11 Jun 2006 05:42:47 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit erase vector on Sun, 11 Jun 2006 09:37:04 GMT]]></title><description><![CDATA[<p>1. Dir fehlt in cLine ein operator um zwei Objekte zu vergleichen. Das ist der == operator. Man kann dann meistens direkt den != operator machen:</p>
<pre><code class="language-cpp">bool operator==(cLine const &amp; other) const {
  return itsBETA == other.itsBETA and itsP == other.itsP;
}
bool operator!=(cLine const &amp; other) const {
  return not (*this == other);
}
</code></pre>
<p>2. Beim erase willst du wahrscheinlch vom Rückgabewert von remove bis zum Ende löschenn. So wie ich das sehe löscht du nur ein Element.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075462</guid><dc:creator><![CDATA[Ponto]]></dc:creator><pubDate>Sun, 11 Jun 2006 09:37:04 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit erase vector on Sun, 11 Jun 2006 11:45:16 GMT]]></title><description><![CDATA[<p>danke fuer die antwort. da hast recht, ich will nur ein einzelnes element loeschen. dazu sollte man vielleicht wissen, wie ich GRID definiert habe:</p>
<pre><code class="language-cpp">vector &lt;cLine&gt; GRID[2];
</code></pre>
<p>ich geht im speziellen darum, eine einzelne linie, die weniger als eine bestimmte punktanzahl enthaelt, aus dem vector herauszuloeschen. alle anderen linien sollen im GRID enthalten bleiben. leider akzeptiert der compiler den unten beschrieben code nicht und gibt darum diese fehlermeldung aus.</p>
<p>achso, und wozu sollte ich den operator einsetzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075539</guid><dc:creator><![CDATA[*stick_thai*]]></dc:creator><pubDate>Sun, 11 Jun 2006 11:45:16 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit erase vector on Sun, 11 Jun 2006 11:46:02 GMT]]></title><description><![CDATA[<p>danke fuer die antwort. da hast recht, ich will nur ein einzelnes element loeschen. dazu sollte man vielleicht wissen, wie ich GRID definiert habe:</p>
<pre><code class="language-cpp">vector &lt;cLine&gt; GRID[2];
</code></pre>
<p>ich geht im speziellen darum, eine einzelne linie, die weniger als eine bestimmte punktanzahl enthaelt, aus dem vector herauszuloeschen. alle anderen linien sollen im GRID enthalten bleiben. leider akzeptiert der compiler den unten beschrieben code nicht und gibt darum diese fehlermeldung aus.</p>
<p>achso, und wozu sollte ich den operator einsetzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075540</guid><dc:creator><![CDATA[*stick_thai*]]></dc:creator><pubDate>Sun, 11 Jun 2006 11:46:02 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit erase vector on Sun, 11 Jun 2006 11:50:42 GMT]]></title><description><![CDATA[<p><em>stick_thai</em> schrieb:</p>
<blockquote>
<p>danke fuer die antwort. da hast recht, ich will nur ein einzelnes element loeschen. dazu sollte man vielleicht wissen, wie ich GRID definiert habe:</p>
<pre><code class="language-cpp">vector &lt;cLine&gt; GRID[2];
</code></pre>
<p>ich geht im speziellen darum, eine einzelne linie, die weniger als eine bestimmte punktanzahl enthaelt, aus dem vector herauszuloeschen. alle anderen linien sollen im GRID enthalten bleiben. leider akzeptiert der compiler den unten beschrieben code nicht und gibt darum diese fehlermeldung aus.</p>
<p>achso, und wozu sollte ich den operator einsetzen?</p>
</blockquote>
<p>Die Funktion remove benötigt den, um herauszufinden welches Element gelöscht werden soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075546</guid><dc:creator><![CDATA[Ponto]]></dc:creator><pubDate>Sun, 11 Jun 2006 11:50:42 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit erase vector on Tue, 13 Jun 2006 09:48:35 GMT]]></title><description><![CDATA[<p>HALLO.</p>
<p>ich habe noch eine frage zu dem oben geposteten code von PONTO zu den operatoren <code>==</code> und <code>!=</code>.<br />
was haben &quot;and&quot; und &quot;not&quot; für eine bedeutung?</p>
<p>achso, und warum heisst es</p>
<pre><code class="language-cpp">other.itsBETA
</code></pre>
<p>und nicht</p>
<pre><code class="language-cpp">other.m_getBeta()
</code></pre>
<p>??</p>
<p>DANKE.<br />
STICK.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1076768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1076768</guid><dc:creator><![CDATA[stick_thai]]></dc:creator><pubDate>Tue, 13 Jun 2006 09:48:35 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit erase vector on Tue, 13 Jun 2006 10:14:57 GMT]]></title><description><![CDATA[<p>stick_thai schrieb:</p>
<blockquote>
<p>HALLO.</p>
<p>ich habe noch eine frage zu dem oben geposteten code von PONTO zu den operatoren <code>==</code> und <code>!=</code>.<br />
was haben &quot;and&quot; und &quot;not&quot; für eine bedeutung?</p>
</blockquote>
<p>Gar keine: Das &quot;and&quot; müßte eigentlich ein &quot;&amp;&amp;&quot; sein, und das &quot;not&quot; ein &quot;!&quot;.</p>
<p>stick_thai schrieb:</p>
<blockquote>
<p>achso, und warum heisst es</p>
<pre><code class="language-cpp">other.itsBETA
</code></pre>
<p>und nicht</p>
<pre><code class="language-cpp">other.m_getBeta()
</code></pre>
<p>??</p>
<p>DANKE.<br />
STICK.</p>
</blockquote>
<p>Da die Vergleichs-Opreratoren hier offenbar Member der Klasse sind, spielt es keine Rolle.</p>
<p>Sollte aber eigentlich nicht so sein. Es gab vor kurzem mal einen Thread, der sich darüber ausließ das operator== immer ein freier Operator sein sollte und in dem Fall hätte ausschließlich m_getBeta() funktioniert (es sei denn man macht den operator zu einem friend der Klasse).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1076786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1076786</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Tue, 13 Jun 2006 10:14:57 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit erase vector on Tue, 13 Jun 2006 10:45:02 GMT]]></title><description><![CDATA[<p>Was ist das eigentlich für eine Errungenschaft die Methoden mit m_ zu kennzeichnen?!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1076799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1076799</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 13 Jun 2006 10:45:02 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit erase vector on Tue, 13 Jun 2006 11:08:21 GMT]]></title><description><![CDATA[<p>Eine, die möglichst schnell wieder in Vergessenheit geraten sollte? <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/1076814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1076814</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Tue, 13 Jun 2006 11:08:21 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit erase vector on Tue, 13 Jun 2006 22:03:51 GMT]]></title><description><![CDATA[<p>stick_thai schrieb:</p>
<blockquote>
<p>HALLO.</p>
<p>ich habe noch eine frage zu dem oben geposteten code von PONTO zu den operatoren <code>==</code> und <code>!=</code>.<br />
was haben &quot;and&quot; und &quot;not&quot; für eine bedeutung?</p>
</blockquote>
<p>and bedeutet das gleiche wie &amp;&amp; und not bedeutet das gleiche wie !. In C++ darf man die sprechenden Namen verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077241</guid><dc:creator><![CDATA[Ponto]]></dc:creator><pubDate>Tue, 13 Jun 2006 22:03:51 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit erase vector on Tue, 13 Jun 2006 22:18:58 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Was ist das eigentlich für eine Errungenschaft die Methoden mit m_ zu kennzeichnen?!?</p>
</blockquote>
<p>und seit wann heißen eigentlich in C++ nicht-statische funktionen einer klasse methoden? <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/1077246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077246</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 13 Jun 2006 22:18:58 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit erase vector on Wed, 14 Jun 2006 10:03:36 GMT]]></title><description><![CDATA[<p>SERVUS.</p>
<p>ich möchte nochmal zu meinem code nachhacken. ich habe jetzt die veränderungen von PONTO (also die beiden operatoren == und !=) in meine klasse eingefügt. zumindest gibts jetzt auch keine fehlermeldung mehr und es werden auch ein paar von den linien, die zuwenig punkte enthalten (GRID[i][j].m_size()&lt;dnv), herausgelöscht. leider werden auch welche gelöscht, die genügend punkte enthalten und es gibt immer noch einige, deren grösse zwar kleiner als dnv ist, aber die nicht gelöscht werden. es werden also teilweise die falschen linien gelöscht, und die kurzen linien bleiben erhalten. woran kann das jetzt noch liegen?</p>
<p>DANKE.<br />
STICK.</p>
<p>p.s.: hier nochmal mein neuer code:</p>
<pre><code class="language-cpp">for (i=0;i&lt;2;i++)
	{
		for (j=0;j&lt;GRID[i].size();j++)
		{
			if (GRID[i][j].m_size()&lt;dnv)
			{
				GRID[i].erase(remove (GRID[i].begin(),GRID[i].end(),GRID[i][j]));
				j--;
			}
        }
	}
</code></pre>
<p>hie die klasse:</p>
<pre><code class="language-cpp">class cLine
{
	public:
		vector &lt;cPoint&gt; PKT;

		cLine :: cLine ()
		{
			cPoint p;
			p.m_setpkt(0,0);
			PKT.push_back(p);
			itsBETA = 0;
			itsP = 0;
		}
		cLine :: ~cLine ()
		{}
		int m_size () const
		{return (PKT.size());};
		void m_inback (double i, double j)
		{
			cPoint p;
			p.m_setpkt(i,j);
			if (PKT.back().GetX()==0 &amp;&amp; PKT.back().GetY()==0 &amp;&amp; PKT.size()==1)
				PKT[0].m_setpkt(p.GetX(),p.GetY());
			else
				PKT.push_back(p);
		}
		void m_infront (double i, double j)
		{
			cPoint p;
			p.m_setpkt(i,j);
			if (PKT.front().GetX()==0 &amp;&amp; PKT.front().GetY()==0 &amp;&amp; PKT.size()==1)
				PKT[0].m_setpkt(p.GetX(),p.GetY());
			else
				PKT.insert(PKT.begin(),p);
		}
		cPoint m_getpkt (int i)
		{return PKT[i];}
		cPoint m_back () const
		{return (PKT.back());};
		cPoint m_front () const
		{return (PKT.front());};
		void m_clear ()
		{PKT.clear();}
		void m_setpara (double i, double j)
		{
			itsBETA = i;
			itsP = j;
		}
		double m_getBeta () const
		{return itsBETA;}
		double m_getP () const
		{return itsP;}

		bool operator== (cLine const &amp;other) const 
		{return itsBETA == other.itsBETA &amp;&amp; itsP == other.itsP;}
		bool operator!= (cLine const &amp;other) const 
		{return !(*this == other);}

	private:
		double itsBETA;
		double itsP;
};
</code></pre>
<p>EDIT:<br />
ich habe es inzwischen selber gelöst, auch ohne &quot;==&quot; und &quot;!=&quot; operator. so sieht die lösung jetzt aus:</p>
<pre><code class="language-cpp">for (i=0;i&lt;2;i++)
{
	vector&lt;cLine&gt;::iterator it = GRID[i].begin();
	j=0;
	while (it!=GRID[i].end())
	{
		if (GRID[i][j].m_size()&lt;dnv)
			GRID[i].erase(it);
		else
		{
			j++;
			it++;
		}
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1077316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077316</guid><dc:creator><![CDATA[stick_thai]]></dc:creator><pubDate>Wed, 14 Jun 2006 10:03:36 GMT</pubDate></item></channel></rss>