Help/Suggestions with Iteration

``` 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 ...```