35657

Untitled

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