Advertisement
RobertDeMilo

RB4.1 Эффективное использование вектора

Apr 18th, 2024
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. void LogVectorParams(const vector<int>& v)
  7. {
  8.     cout << "Length = " << v.size() << ", " << "capacity = " << v.capacity() << "\n";
  9.  
  10.     const int* data = v.data();
  11.  
  12.     for (size_t i = 0; i < v.capacity(); ++i)
  13.     {
  14.         cout << *(data + i) << " ";
  15.     }
  16.     cout << "\n";
  17. }
  18.  
  19. int main()
  20. {
  21.     /*vector<int> v = { 1,2,3 };
  22.     LogVectorParams(v);
  23.  
  24.     v.push_back(4);
  25.     LogVectorParams(v);
  26.  
  27.     v.shrink_to_fit();
  28.     LogVectorParams(v); */
  29.  
  30.     int size;
  31.     cin >> size;
  32.  
  33.     {
  34.         //LOG_DURATION("push_back");
  35.         vector<int> v;
  36.         for (int i = 0; i < size; ++i)
  37.         {
  38.             v.push_back(i);
  39.         }
  40.         // при push_back вектор перевыделяет память и копирует данные из старой памяти в новую
  41.     }
  42.  
  43.     {
  44.         //LOG_DURATION("push_back");
  45.         vector<int> v;
  46.         v.reserve(size);
  47.         for (int i = 0; i < size; ++i)
  48.         {
  49.             v.push_back(i);
  50.         }
  51.         // reserve позволяет зарезервировать достаточное кол-во памяти и сэкономить на реаллокациях
  52.     }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement