Advertisement
Derga

Untitled

May 26th, 2023
719
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.22 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <numeric>
  4. #include <list>
  5.  
  6. using namespace std;
  7.  
  8. void foo1(list<int>& l) {
  9.     auto it = l.begin();
  10.     while (it != l.end()) {
  11.         if (*it % 2 == 1) {
  12.             it = l.erase(it);//метод erase() удаляет элемент по итератору и возвращает итератор на следующий элемент
  13.         } else {
  14.             it++;
  15.         }
  16.     }
  17. }
  18.  
  19. template <typename T>
  20. void foo2(T* arr, int size) {
  21.     for (int i = 0; i + 1 < size; i += 2) {
  22.         int tmp = arr[i];
  23.         arr[i] = arr[i + 1];
  24.         arr[i + 1] = tmp;
  25.     }
  26. }
  27.  
  28. int main() {
  29.     //task1
  30.     //возможно естьсмысл посмотреть на cppreference методы класса вектор и реализовать свой вектор (без итераторов)
  31.     vector<int> v;
  32.     //cout << v.size() << ' ' << v.capacity() << endl;
  33.    
  34.     //у вектора три основные параметры - это размер выделенной памяти (capacity), число элементов (size),
  35.     //указатель на начало памяти в которой лежат элементы
  36.     //при динамическом выделении памяти элементы не создаются. reserve - выделяет память, меняется параметр capacity
  37.  
  38.     v.reserve(200);
  39.     //cout << v.size() << ' ' << v.capacity() << endl;
  40.    
  41.     //тут создастся 100 элементов конструктором по умолчанию для int
  42.     v.resize(100);
  43.     //v.resize(100, 21); //первый параметр - сколько элементов, второй - каких
  44.    // cout << v.size() << ' ' << v.capacity() << endl;
  45.    
  46.     //push_back добавляет элементы если под них есть память и перевыделяет память, переписывает старые элементы,
  47.     //очищает старую память и добавляет новый, если памяти было недостаточно
  48.     for (int i = 0; i < 100; ++i) {
  49.         v.push_back(i * i);
  50.     }
  51.     //cout << v.size() << ' ' << v.capacity() << endl;
  52.    
  53.     v.reserve(50);
  54.     //cout << v.size() << ' ' << v.capacity() << endl;
  55.  
  56.     /*
  57.     cout << endl;
  58.     for (int i = 0; i < v.size(); ++i) {
  59.         cout << i << ' ' << v[i] << endl;
  60.     }
  61.     */
  62.  
  63.     //task2
  64.     list<int> l;
  65.     for (int i = 0; i < 10; ++i) {
  66.         l.push_back(i);
  67.     }
  68.  
  69.     /*
  70.     foo1(l);
  71.     for (auto elem : l) {
  72.         cout << elem << ' ';
  73.     }
  74.     */
  75.  
  76.    
  77.     int arr[] = { 2, 3, 1};
  78.     int a = accumulate(begin(arr), end(arr), 0, [&](const auto& init, const auto& rhs) {
  79.         return init + rhs * rhs * rhs;
  80.     });
  81.     cout << a;
  82.     /*
  83.     foo2(arr, size(arr));
  84.     for (int i = 0; i < size(arr); ++i) {
  85.         cout << arr[i] << ' ';
  86.     }
  87.     */
  88.     //5 нужно было добавить .push_back(move(ptr));
  89.  
  90.     //6
  91.     //уюираем лишнее копирование, берем элемент по константной ссылке
  92.     //for (const auto& person : persons)
  93.  
  94.     return 0;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement