Advertisement
kutuzzzov

Урок 6 Оптовая передача

Jun 13th, 2023
862
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.89 KB | None | 0 0
  1. #include <iostream>
  2. #include <list>
  3. #include <set>
  4. #include <string_view>
  5. #include <vector>
  6.  
  7. using namespace std;
  8.  
  9. template <typename InputIt1, typename InputIt2>
  10. void Merge(InputIt1 src1_begin, InputIt1 src1_end, InputIt2 src2_begin, InputIt2 src2_end, ostream& out) {
  11.     while (src1_begin != src1_end && src2_begin != src2_end) {
  12.         if (std::less<>()(*src2_begin, *src1_begin)) {
  13.             out << *src2_begin++ << endl;
  14.         }
  15.         else {
  16.             out << *src1_begin++ << endl;
  17.         }
  18.     }
  19.     while (src1_begin != src1_end) {
  20.         out << *src1_begin++ << endl;
  21.     }
  22.     while (src2_begin != src2_end) {
  23.         out << *src2_begin++ << endl;
  24.     }
  25. }
  26.  
  27. template <typename T1, typename T2>
  28. void MergeSomething(const T1& src1, const T2& src2, ostream& out) {
  29.     Merge(src1.begin(), src1.end(), src2.begin(), src2.end(), out);
  30. }
  31.  
  32. template <typename T>
  33. void MergeHalves(const vector<T>& src, ostream& out) {
  34.     auto mid_it = src.begin() + (src.size() + 1) / 2;
  35.     Merge(src.begin(), mid_it, mid_it, src.end(), out);
  36. }
  37.  
  38. int main() {
  39.     vector<int> v1{ 60, 70, 80, 90 };
  40.     vector<int> v2{ 65, 75, 85, 95 };
  41.     vector<int> combined{ 60, 70, 80, 90, 65, 75, 85, 95 };
  42.     list<double> my_list{ 0.1, 72.5, 82.11, 1e+30 };
  43.     string_view my_string = "ACNZ"sv;
  44.     set<unsigned> my_set{ 20u, 77u, 81u };
  45.  
  46.     // пока функция MergeSomething реализована пока только для векторов
  47.     cout << "Merging vectors:"sv << endl;
  48.     MergeSomething(v1, v2, cout);
  49.  
  50.     cout << "Merging vector and list:"sv << endl;
  51.     MergeSomething(v1, my_list, cout);
  52.  
  53.     cout << "Merging string and list:"sv << endl;
  54.     MergeSomething(my_string, my_list, cout);
  55.  
  56.     cout << "Merging set and vector:"sv << endl;
  57.     MergeSomething(my_set, v2, cout);
  58.  
  59.     cout << "Merging vector halves:"sv << endl;
  60.     MergeHalves(combined, cout);
  61.  
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement