S
SERVUS.
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()<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?
DANKE.
STICK.
p.s.: hier nochmal mein neuer code:
for (i=0;i<2;i++)
{
for (j=0;j<GRID[i].size();j++)
{
if (GRID[i][j].m_size()<dnv)
{
GRID[i].erase(remove (GRID[i].begin(),GRID[i].end(),GRID[i][j]));
j--;
}
}
}
hie die klasse:
class cLine
{
public:
vector <cPoint> 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 && PKT.back().GetY()==0 && 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 && PKT.front().GetY()==0 && 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 &other) const
{return itsBETA == other.itsBETA && itsP == other.itsP;}
bool operator!= (cLine const &other) const
{return !(*this == other);}
private:
double itsBETA;
double itsP;
};
EDIT:
ich habe es inzwischen selber gelöst, auch ohne "==" und "!=" operator. so sieht die lösung jetzt aus:
for (i=0;i<2;i++)
{
vector<cLine>::iterator it = GRID[i].begin();
j=0;
while (it!=GRID[i].end())
{
if (GRID[i][j].m_size()<dnv)
GRID[i].erase(it);
else
{
j++;
it++;
}
}
}