Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.06 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <array>
  5.  
  6. //1
  7. template <typename T>
  8. const T& get_min_element(const std::vector<T>& v) {
  9.     return *min_element(v.begin(), v.end());
  10. }
  11.  
  12. //2
  13. template <typename T>
  14. std::vector<T> get_min_max(const std::vector<T>& vec) {
  15.     int min1 = vec[0];
  16.     int min2 = vec[1];
  17.  
  18.     if (min1 > min2) {
  19.         min1 = vec[1];
  20.         min2 = vec[0];
  21.     }
  22.  
  23.     for (int i = 2; i < vec.size(); i++) {
  24.         if (min1 > vec[i]) {
  25.             min2 = min1;
  26.             min1 = vec[i];
  27.         }
  28.         else if (min2 > vec[i]) {
  29.             min2 = vec[i];
  30.         }
  31.     }
  32.  
  33.  
  34.     int max1 = vec[0];
  35.     int max2 = vec[1];
  36.  
  37.     if (max2 > max1) {
  38.         max1 = vec[1];
  39.         max2 = vec[0];
  40.     }
  41.  
  42.     for (int i = 2; i < vec.size(); i++) {
  43.         if (vec[i] > max1) {
  44.             max2 = max1;
  45.             max1 = vec[i];
  46.         }
  47.         else if (vec[i] > max2 && vec[i] != max1) {
  48.             max2 = vec[i];
  49.         }
  50.     }
  51.  
  52.  
  53.     std::vector<T> returned = {min1, min2, max2, max1};
  54.     return returned;
  55. }
  56.  
  57. //3
  58. template <typename T, template <typename> typename U>
  59. T get_max(const U<T>& vec) {
  60.     return *std::max_element(vec.begin(), vec.end());
  61. }
  62.  
  63. //5
  64. template <typename T>
  65. void add_element(std::vector<T>& vec, T element) {
  66.     bool is_added = false;
  67.  
  68.     for (int i = 0; i < vec.size() - 1; i++) {
  69.         if (element <= vec[i+1] && element >= vec[i]) {
  70.             auto index = vec.begin() + i + 1;
  71.             vec.insert(index, element);
  72.  
  73.             is_added = true;
  74.         }
  75.     }
  76.  
  77.     if (!is_added) {
  78.         vec.push_back(element);
  79.     }
  80. }
  81.  
  82. //6
  83. template <typename T>
  84. std::ostream& operator <<(std::ostream& text, const std::vector<T>& vec) {
  85.     if (vec.empty()) {
  86.         text << "ERROR";
  87.         return text;
  88.     }
  89.     else if (vec.size() == 1) {
  90.         text << "[" << vec[0] << "]";
  91.     }
  92.     else {
  93.         for (int i = 0; i < vec.size(); i++) {
  94.             if (i == 0) {
  95.                 text << "[" << vec[i] << ", ";
  96.             }
  97.             else if (i == vec.size() - 1) {
  98.                 text << vec[i] << "]";
  99.             }
  100.             else {
  101.                 text << vec[i] << ", ";
  102.             }
  103.         }
  104.     }
  105.  
  106.     return text;
  107. }
  108.  
  109. /*7
  110. template <typename T, typename U>
  111. struct Pair {
  112.     T first;
  113.     U second;
  114.  
  115.     Pair(T a, U b) {
  116.         first = a;
  117.         second = b;
  118.     }
  119. };*/
  120.  
  121. //8
  122. template <typename T, const std::size_t N>
  123. struct array {
  124.     T tab[N];
  125.  
  126.     T& operator[](std::size_t i) {
  127.         return tab[i];
  128.     }
  129.  
  130.     const T& operator[](std::size_t i) const {
  131.         return tab[i];
  132.     }
  133.  
  134.     T* begin() {
  135.         T *pointer = &tab[0];
  136.         return pointer;
  137.     }
  138.  
  139.     T* end() {
  140.         T *pointer = &tab[N-1];
  141.         return (pointer + 1);
  142.     }
  143.  
  144.     int size() {
  145.         return N;
  146.     }
  147. };
  148.  
  149. //9
  150. template <typename T, const std::size_t N>
  151. std::array<T, N> generate_array() {
  152.     std::array<T, N> arr;
  153.     return arr;
  154. }
  155.  
  156. int main() {
  157.    
  158.    
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement