Advertisement
35657

Untitled

May 24th, 2024
472
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.37 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4.  
  5. template<typename container>
  6. void print(container cont) {
  7.     for (const auto& a : cont) {
  8.         std::cout << a << " ";
  9.     }
  10.     std::cout << std::endl;
  11. }
  12.  
  13.  
  14. int main() {
  15.  
  16.     const int MAX_SIZE = 30;
  17.  
  18.     std::vector<int> numbers{ 89, 42, 6, 14, 81, 91, 28, 64, 48, 66, 55, 17, 85, 22, 22, 63, 81, 45, 29, 67, 52, 47, 23, 98, 3, 32, 71, 53, 93, 49, 60, 88, 59, 37, 68, 55, 29, 73, 42, 45 };
  19.  
  20.     print(numbers);
  21.    
  22.     std::sort(numbers.begin(), numbers.end()); // сортировка по умолчанию (по возрастанию)
  23.  
  24.     print(numbers);
  25.  
  26.     // сортировка по определенному критерию
  27.     std::sort(numbers.begin(), numbers.end(), [](const int left, const int right) {return left > right; });
  28.  
  29.     print(numbers);
  30.  
  31.  
  32.     // разворот контейнера
  33.     std::reverse(numbers.begin(), numbers.end());
  34.  
  35.     print(numbers);
  36.  
  37.     // показывает количество вхождений определенного значения в указанном диапазоне контейнера
  38.     std::cout << std::count(numbers.begin(), numbers.end(), 81) << std::endl;
  39.  
  40.  
  41.     // поиск элемента в контейнере
  42.     auto it = std::find(numbers.begin(), numbers.end(), 73);
  43.  
  44.     if (it != numbers.end()) {
  45.         *it += 1;
  46.     }
  47.  
  48.     print(numbers);
  49.  
  50.     // удаляет элемент (при наличии) путем сдвига всех элементов справа от него на одну позицию левее и возвращает итератор на новый конец вектора
  51.     it = std::remove(numbers.begin(), numbers.end(), 74);
  52.  
  53.     // удаляем элемент по итератору, который вернула функция remove
  54.     numbers.erase(it);
  55.  
  56.     print(numbers);
  57.  
  58.     // удаляем в векторе все элементы, удовлетворяющие определенному условию
  59.     it = remove_if(numbers.begin(), numbers.end(), [](int a) {return a > 20 && a < 30; });
  60.  
  61.     // удаляем лишний диапазон
  62.     numbers.erase(it, numbers.end());
  63.  
  64.     print(numbers);
  65.  
  66.  
  67.     // замена всех значений в контейнере равных 81 на 83
  68.     std::replace(numbers.begin(), numbers.end(), 81, 83);
  69.  
  70.     print(numbers);
  71.  
  72.     // замена элементов, удовлетворяющих определенному условию
  73.     std::replace_if(numbers.begin(), numbers.end(), [](int a) { return a < 20; }, 1);
  74.  
  75.     print(numbers);
  76.  
  77.  
  78.     // удаляет дубли, возвращает итератор на новый конец вектора
  79.     it = std::unique(numbers.begin(), numbers.end());
  80.  
  81.     numbers.erase(it, numbers.end());
  82.  
  83.     print(numbers);
  84.  
  85.  
  86.     // возвращает итератор на первый элемент, больший или равный указанному
  87.     it = std::lower_bound(numbers.begin(), numbers.end(), 50);
  88.  
  89.     if (it != numbers.end()) {
  90.         std::cout << *it << std::endl;
  91.     }
  92.  
  93.     // выполняет указанное действие для всех элементов из указанного диапазоне
  94.     std::for_each(numbers.begin(), it, [](int& a) { a *= 2; });
  95.  
  96.     print(numbers);
  97. }
  98.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement