Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #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() {
- const int MAX_SIZE = 30;
- 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 left, const int right) {return left > right; });
- print(numbers);
- // разворот контейнера
- std::reverse(numbers.begin(), numbers.end());
- print(numbers);
- // показывает количество вхождений определенного значения в указанном диапазоне контейнера
- std::cout << std::count(numbers.begin(), numbers.end(), 81) << std::endl;
- // поиск элемента в контейнере
- 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);
- // удаляем элемент по итератору, который вернула функция remove
- numbers.erase(it);
- print(numbers);
- // удаляем в векторе все элементы, удовлетворяющие определенному условию
- it = remove_if(numbers.begin(), numbers.end(), [](int a) {return a > 20 && a < 30; });
- // удаляем лишний диапазон
- numbers.erase(it, numbers.end());
- print(numbers);
- // замена всех значений в контейнере равных 81 на 83
- std::replace(numbers.begin(), numbers.end(), 81, 83);
- print(numbers);
- // замена элементов, удовлетворяющих определенному условию
- std::replace_if(numbers.begin(), numbers.end(), [](int a) { return a < 20; }, 1);
- print(numbers);
- // удаляет дубли, возвращает итератор на новый конец вектора
- it = std::unique(numbers.begin(), numbers.end());
- numbers.erase(it, numbers.end());
- print(numbers);
- // возвращает итератор на первый элемент, больший или равный указанному
- it = std::lower_bound(numbers.begin(), numbers.end(), 50);
- if (it != numbers.end()) {
- 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
Advertisement