Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //clang 3.8.0
- /*
- 1-ое условие:
- Удалить из первой последовательности все элементы, встречающиеся во второй.
- 2-ое условие:
- Во второй последовательности после каждого элемента, кратного X, вставить новый элемент.
- 3-е условие:
- Отсортировать данные последовательности.
- 4-ое условие:
- Объединить их в одну отсортированную последовательность.
- */
- #include <iostream>
- #include <vector>
- #include <algorithm>
- int main()
- {
- std::vector<int> v1 {1,2,3,4,5,6,7,8,9,10,11,12, 13};
- std::vector<int> v2 {1,2,3,5,55, 2, 7,8,11,2, 12};
- // 1)
- v1.erase(std::remove_if(v1.begin(), v1.end(), [&v2](int n){ return std::find(v2.begin(),v2.end(), n) == v2.end();} ), v1.end());
- // for (auto &n :v1) std::cout << n << " ";
- //2)
- int x = 2;
- auto it = v2.begin();
- while (it != v2.end()) {
- it = find(it, v2.end(), x);
- if (it != v2.end()) {
- it = v2.insert(it, x); // вставляем то же число
- *(++it++) = 0; // после каждого x - ноль
- }
- }
- std::cout << "\n"; for (auto &n :v2) std::cout << n << " ";
- // 3)
- std::sort(v1.begin(), v1.end());
- std::sort(v2.begin(), v2.end());
- //4
- std::vector<int> v3(v1.size() + v2.size());
- auto it2 = std::copy(v1.begin(), v1.end(), v3.begin());
- std::copy(v2.begin(), v2.end(), it2);
- std::inplace_merge (v3.begin(),v3.begin()+v1.size(),v3.end());
- // вывод
- std::cout << "\n";
- for (auto &n :v3) std::cout << n << " ";
- }
Advertisement
Add Comment
Please, Sign In to add comment