fork(1) download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. class X : public vector<int> { };
  6.  
  7. void show(const X& e)
  8. {
  9. size_t n = e.size();
  10. for (size_t i=0; i<n; i++) {
  11. cout << " [" << i << "] = " << e[i] << "\n";
  12. }
  13. cout << "\n";
  14. }
  15.  
  16. void show(const X& e1, const X& e2, const vector<X>& list)
  17. {
  18. cout << "--------------\n";
  19. cout << "e1:" << e1.size() << "\n";
  20. show(e1);
  21.  
  22. cout << "e2:" << e2.size() << "\n";
  23. show(e2);
  24.  
  25. size_t n = list.size();
  26. for (size_t i=0; i<n; i++) {
  27. cout << "list[" << i << "]:" << list[i].size() << "\n";
  28. show(list[i]);
  29. }
  30. }
  31.  
  32. int main() {
  33. X e1, e2;
  34. vector<X> list;
  35.  
  36. cout << "(1)初期状態\n";
  37. e1.push_back(0);
  38. e2.push_back(1);
  39. e2.push_back(2);
  40. list.push_back(e1);
  41. list.push_back(e2);
  42. show(e1, e2, list);
  43.  
  44. cout << "(2)呼び出し元の実体を拡大\n";
  45. e1.push_back(3);
  46. e2.push_back(4);
  47. show(e1, e2, list);
  48.  
  49. cout << "(3)vector の要素を拡大\n";
  50. list[0].push_back(5);
  51. list[1].push_back(6);
  52. show(e1, e2, list);
  53.  
  54. return 0;
  55. }
Success #stdin #stdout 0.01s 5360KB
stdin
Standard input is empty
stdout
(1)初期状態
--------------
e1:1
 [0] = 0

e2:2
 [0] = 1
 [1] = 2

list[0]:1
 [0] = 0

list[1]:2
 [0] = 1
 [1] = 2

(2)呼び出し元の実体を拡大
--------------
e1:2
 [0] = 0
 [1] = 3

e2:3
 [0] = 1
 [1] = 2
 [2] = 4

list[0]:1
 [0] = 0

list[1]:2
 [0] = 1
 [1] = 2

(3)vector の要素を拡大
--------------
e1:2
 [0] = 0
 [1] = 3

e2:3
 [0] = 1
 [1] = 2
 [2] = 4

list[0]:2
 [0] = 0
 [1] = 5

list[1]:3
 [0] = 1
 [1] = 2
 [2] = 6