Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Multitude Multitude::operator + (const Multitude& b) const //"first and second"
- {
- Multitude result;
- const Multitude& A = *this;
- const Multitude& B = b;
- auto iA = (*this).begin();
- auto iB = b.begin();
- while (true) { // проходимося допоки не закінчаться обидва зв'язні списки
- if(!(A.end() && B.end())) { // якщо обидва ще не закінчилися
- if (iA == iB) { // еквівалентні елементи додаються лише один раз
- result.addElement(*iA);
- ++iA; ++iB; // проходимо по двох списках далі
- continue;
- } else if (*iA < *iB) {
- result.addElement(*iA);
- ++iA; // "перший операнд доганяє другий"
- continue;
- } else { // *iA > *iB
- result.addElement(*iA);
- ++iB; // "другий операнд доганяє другий"
- continue;
- }
- } else if (!(A.end()) && B.end()) { // якщо перший операнд не закічився, а другий так, то додаються лише елементи з першого
- result.addElement(*iA);
- ++iA;
- continue;
- } else if (A.end() && !(B.end())) {
- result.addElement(*iB);
- ++iB;
- continue;
- }
- return result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment