olexander_dan

Untitled

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