Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <vector>
- #include <algorithm>
- template <typename Container>
- void Print(Container cont) {
- for (const auto& a : cont) {
- std::cout << a << " ";
- }
- std::cout << std::endl;
- }
- int main() {
- 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 };
- Print(numbers);
- // сортировка по умолчанию (по возрастанию)
- std::sort(numbers.begin(), numbers.end());
- Print(numbers);
- // сортировка по определенным критериям (в данном случае по убыванию)
- std::sort(numbers.begin(), numbers.end(), [](const int a, const int b) {return a > b; });
- Print(numbers);
- // разворот контейнера
- std::reverse(numbers.begin(), numbers.end());
- Print(numbers);
- // показывает количество вхождений определенного элемента в контейнер
- std::cout << std::count(numbers.begin(), numbers.end(), 81) << std::endl;
- // показывает количество вхождений в контейнер элементов, удовлетворяющих определенным критериям (в данном случае четных элементов)
- std::cout << std::count_if(numbers.begin(), numbers.end(), [](const int a) { return a % 2 == 0; }) << std::endl;
- // получаем итератор на элемент 73
- auto it = std::find(numbers.begin(), numbers.end(), 73);
- // через итератор изменяем значение элемента
- if (it != numbers.end()) {
- *it += 1;
- }
- Print(numbers);
- // удаляет определенный элемент путем сдвига в конец контейнера
- it = std::remove(numbers.begin(), numbers.end(), 74);
- numbers.erase(it); // удаляем ненужный элемент (не забываем применять erase после remove)
- Print(numbers);
- // удаляет все элементы, удовлетворяющие определенным условиям, путем сдвига в конец контейнера
- it = std::remove_if(numbers.begin(), numbers.end(), [](int a) { return a > 20 && a < 30; });
- numbers.erase(it, numbers.end()); // удаляем ненужные элементы
- Print(numbers);
- // заменяет указанный элемент в контейнере
- std::replace(numbers.begin(), numbers.end(), 93, 95);
- Print(numbers);
- // заменяет элементы, удовлетворяющие определенным условиям
- std::replace_if(numbers.begin(), numbers.end(), [](int a) {return a < 10; }, 1);
- Print(numbers);
- // удаляет дубликаты путем сдвига в конец контейнера
- it = std::unique(numbers.begin(), numbers.end());
- // не забываем применять в паре с unique
- numbers.erase(it, numbers.end());
- Print(numbers);
- // возвращает итератор на элемент, значение которого больше указанного
- it = upper_bound(numbers.begin(), numbers.end(), 30);
- std::cout << *it << std::endl;
- // применяет указанную функцию ко всем элементам из указанного диапазона
- std::for_each(numbers.begin(), it, [](int& a) { a *= 2; });
- Print(numbers);
- }
Advertisement
Add Comment
Please, Sign In to add comment