fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. int main() {
  6.  
  7. vector<int> v;
  8.  
  9. for(int i = 0;i<100;++i){
  10. v.push_back(i+1);
  11. }
  12.  
  13. auto it = v.begin();
  14.  
  15. cout << *it << endl;//1, звісно
  16.  
  17. auto old_capacity = v.capacity();
  18. cout << "size = " <<v.size()<<" capacity = "<<v.capacity()<<endl;
  19. int i = 101;
  20. while( old_capacity == v.capacity() ) {
  21. v.push_back(i++);
  22. }
  23.  
  24. cout << "size = " <<v.size()<<" capacity = "<<v.capacity()<<endl;
  25.  
  26. cout << *it << endl;//тут має бути 1, бо it вказує у звільнену область пам'яті,
  27. //де ще лишаються старі дані, але це не гарантовано
  28. v[0]=1000;
  29. cout << *it << endl; //тут знову має бути 1
  30. cout << *v.begin() << endl; //тут має бути 1000
  31. *it=300; //дуже погано так робити - ми пишемо у звільнену пам'ять
  32. cout << *it << endl; //може, вийде, може, ні
  33. vector<int> u(10,999);
  34. cout << *it << endl;//якщо пощастить, буде 999
  35.  
  36. return 0;
  37. }
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
1
size = 100 capacity = 128
size = 129 capacity = 256
1
1
1000
300
300