Ozonkor
1st May 2015, 14:09
Hello All!
I've created my first GUI Application, using QT C++ in Windows. Unfortunately, it throws runtime error. Can anyone help me with this code:
void Manager::vectorsDifference(QVector<Data*> *vectorFirst, QVector<Data*> *vectorSecond, QVector<Data*> *vectorOutput)
{
QVector<Data*>::iterator itFirst;
QVector<Data*>::iterator itSet;
QVector<Data*>::iterator itDel;
QVector<Data*> vDeleted;
int iVec;
for(itFirst = vectorFirst->begin(); itFirst != vectorFirst->end(); itFirst++)
{
vectorOutput->push_back(*itFirst);
}
for(itSet = vectorOutput->begin(); itSet != vectorOutput->end(); itSet++)
{
for(iVec = 0; iVec != vectorSecond->size() - 1; iVec++)
{
if ((*itSet)->x == vectorSecond->at(iVec)->x &&
(*itSet)->y == vectorSecond->at(iVec)->y )
{
vDeleted.push_back(*itSet);
vectorOutput->erase(itSet);
}
}
for(itDel = vDeleted.begin(); itDel != vDeleted.end(); itDel++)
{
if( (*itSet)->x == (*itDel)->x &&
(*itSet)->y == (*itDel)->y)
{
vectorOutput->erase(itSet);
}
}
}
}
class Data
{
public:
qString x,y;
}
pseudocode:
QVector First { {a,a}, {a,b}, {b,a} }
QVector Second { {a,a}, {a,c}, {a,b}, {a,a} }
What I want:
QVector output { {b,a} }
Description:
Vectors(First and Second) stores data of class Data, which contains x and y info. In one vector, there might be a few similar files with the same x and y. I want to create vector of elements, which are only in one vector, but not in the other. That's why I've created another vector (vDeleted) to store data that was deleted, but it might occur again.
The runtime exception is thrown, while data is being erased.
I've created my first GUI Application, using QT C++ in Windows. Unfortunately, it throws runtime error. Can anyone help me with this code:
void Manager::vectorsDifference(QVector<Data*> *vectorFirst, QVector<Data*> *vectorSecond, QVector<Data*> *vectorOutput)
{
QVector<Data*>::iterator itFirst;
QVector<Data*>::iterator itSet;
QVector<Data*>::iterator itDel;
QVector<Data*> vDeleted;
int iVec;
for(itFirst = vectorFirst->begin(); itFirst != vectorFirst->end(); itFirst++)
{
vectorOutput->push_back(*itFirst);
}
for(itSet = vectorOutput->begin(); itSet != vectorOutput->end(); itSet++)
{
for(iVec = 0; iVec != vectorSecond->size() - 1; iVec++)
{
if ((*itSet)->x == vectorSecond->at(iVec)->x &&
(*itSet)->y == vectorSecond->at(iVec)->y )
{
vDeleted.push_back(*itSet);
vectorOutput->erase(itSet);
}
}
for(itDel = vDeleted.begin(); itDel != vDeleted.end(); itDel++)
{
if( (*itSet)->x == (*itDel)->x &&
(*itSet)->y == (*itDel)->y)
{
vectorOutput->erase(itSet);
}
}
}
}
class Data
{
public:
qString x,y;
}
pseudocode:
QVector First { {a,a}, {a,b}, {b,a} }
QVector Second { {a,a}, {a,c}, {a,b}, {a,a} }
What I want:
QVector output { {b,a} }
Description:
Vectors(First and Second) stores data of class Data, which contains x and y info. In one vector, there might be a few similar files with the same x and y. I want to create vector of elements, which are only in one vector, but not in the other. That's why I've created another vector (vDeleted) to store data that was deleted, but it might occur again.
The runtime exception is thrown, while data is being erased.