olexander_dan

Untitled

Jun 5th, 2019
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.24 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.             } else if (*iA < *iB) {
  14.                 result.addElement(*iA);
  15.                 ++iA; // "перший операнд доганяє другий"
  16.                 continue;
  17.             } else { // *iA > *iB
  18.                 result.addElement(*iA);
  19.                 ++iB; // "другий операнд доганяє другий"
  20.                 continue;
  21.             }
  22.         } else if (!(iA.end()) && iB.end()) { // якщо перший операнд не закічився, а другий так, то додаються лише елементи з першого
  23.             result.addElement(*iA);
  24.             ++iA;
  25.             continue;
  26.         } else if (iA.end() && !(iB.end())) {
  27.             result.addElement(*iB);
  28.             ++iB;
  29.             continue;
  30.         }
  31.         return result;
  32.     }
  33. }
Advertisement
Add Comment
Please, Sign In to add comment