If you read my original post, I have edited it to show the solution I have come up with. I have been able to devise an algorithm to multiply two polynomials through the iteration and I have traced the general idea and it works. But currently, it does not work in my program and I have a good feeling that it has to do with the for loops inside the while loop, but I can't nail the exact problem. Can someone provide a hint as to what is the problem is so that I can get back on track? Thanks.

Code:

int sizeA = tmpPoly.PolyTerms.size();
int size = b.PolyTerms.size();
while(sizeA > 0)
{
for(It = tmpPoly.PolyTerms.begin(); It != tmpPoly.PolyTerms.end(); ++It)
{
for(It2 = tmpPoly2.PolyTerms.begin(); It2 != tmpPoly2.PolyTerms.end(); ++It2)
{
exp = (*It) + (*It2);
size--;
++It;
++It2;
coeff = (*It) * (*It2);
tPoly.PolyTerms.push_back(exp);
tPoly.PolyTerms.push_back(coeff);
size--;
if(size > 0) //size of the second polynomial
{
//reset It iterator to first term since there are still more terms to
//multiply in the second polynomial.
It = tmpPoly.PolyTerms.begin();
}
//If the size of tmpPoly2 is 0 then
//we have multiplied all of the terms in tmpPoly2 by the first term in
//tmpPoly but tmpPoly still has more terms. So since tmpPoly has an exp
//followed by coefficient, subtract 2 from sizeA, and delete the first pair of
//exponent, coefficient and the while loop should repeat the process. Also,
//tmpPoly2 size is reset.
sizeA = (sizeA - 2);
cout << "SizeA is: " << sizeA << endl;
if(size == 0)
{
//remove first two enties in tmpPoly
for(int i = 0; i < 2; i++)
{
It = tmpPoly.PolyTerms.begin();
tmpPoly.PolyTerms.erase(It);
}
It2 = tmpPoly2.PolyTerms.begin();
size = tmpPoly2.PolyTerms.size();
}
if(sizeA == 0)
{
cout << "sizeA is 0. We're finished!: " << sizeA << endl;
break;
}
}//end tmpPoly2 for loop
}//end tmpPoly for loop
}//end while
...