olexander_dan

Untitled

Jun 5th, 2019
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1. Multitude Multitude::operator + (const Multitude& b) const  //"first and second"
  2. {
  3.     Multitude result;
  4.    
  5.     const Multitude& A = *this;
  6.     const Multitude& B = b;
  7.    
  8.     auto iA = (*this).begin();
  9.     auto iB = b.begin();
  10.     while (true) { // проходимося допоки не закінчаться обидва зв'язні списки
  11.         if(!(A.end() && B.end())) { // якщо обидва ще не закінчилися
  12.             if (iA == iB) { // еквівалентні елементи додаються лише один раз
  13.                 result.addElement(*iA);
  14.                 ++iA; ++iB; // проходимо по двох списках далі
  15.                 continue;
  16.             } else if (*iA < *iB) {
  17.                 result.addElement(*iA);
  18.                 ++iA; // "перший операнд доганяє другий"
  19.                 continue;
  20.             } else { // *iA > *iB
  21.                 result.addElement(*iA);
  22.                 ++iB; // "другий операнд доганяє другий"
  23.                 continue;
  24.             }
  25.         } else if (!(A.end()) && B.end()) { // якщо перший операнд не закічився, а другий так, то додаються лише елементи з першого
  26.             result.addElement(*iA);
  27.             ++iA;
  28.             continue;
  29.         } else if (A.end() && !(B.end())) {
  30.             result.addElement(*iB);
  31.             ++iB;
  32.             continue;
  33.         }
  34.         return result;
  35.     }
  36. }
Advertisement
Add Comment
Please, Sign In to add comment