fork download
  1. #include <iostream>
  2. #include <functional>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. class Tester
  8. {
  9. public:
  10. Tester(double val) : v(val) {
  11. writeV = [this](){std::cout << "inside lambda " << v << '\n';};
  12. }
  13.  
  14. Tester(const Tester& rhs) : v(rhs.v) {
  15. writeV = [this](){std::cout << "inside lambda " << v << '\n';};
  16. }
  17.  
  18. Tester& operator =(const Tester& rhs) {
  19. v = rhs.v;
  20. // Keep function
  21. return *this;
  22. }
  23.  
  24.  
  25. void writeVexp() const { std::cout << "inside simple function " << v << '\n'; }
  26.  
  27. double v;
  28. std::function<void()> writeV;
  29. };
  30.  
  31. class vectorTester
  32. {
  33. std::vector<Tester> vtst;
  34.  
  35. double size;
  36.  
  37. public:
  38.  
  39. //- default constructor
  40. vectorTester() {}
  41.  
  42. //- construct by number of testers
  43. vectorTester(double num);
  44.  
  45. ~vectorTester() {}
  46.  
  47. //- write publuc members of all Testers
  48. void useTesterLambda();
  49. void useTesterSimple();
  50. void useTesterVar();
  51. };
  52.  
  53. vectorTester::vectorTester(double num)
  54. {
  55. vtst.reserve(num);
  56.  
  57. size = num;
  58.  
  59. for (int i = 0; i < num; ++i)
  60. {
  61. Tester tst (i + 0.365);
  62. vtst.push_back(tst);
  63. }
  64. }
  65.  
  66.  
  67. void vectorTester::useTesterLambda()
  68. {
  69. cout << "\n tester's lambda \n";
  70.  
  71. for (int i = 0; i < size; ++i)
  72. {
  73. vtst[i].writeV();
  74. }
  75. }
  76.  
  77. void vectorTester::useTesterSimple()
  78. {
  79. cout << "\n tester's simple function \n";
  80.  
  81. for (int i = 0; i < size; ++i)
  82. {
  83. vtst[i].writeVexp();
  84. }
  85. }
  86.  
  87. void vectorTester::useTesterVar()
  88. {
  89. cout << "\n tester's vars \n";
  90.  
  91. for (int i = 0; i < size; ++i)
  92. {
  93. cout << vtst[i].v << endl;
  94. }
  95. }
  96.  
  97. int main()
  98. {
  99. vectorTester vtst(5);
  100.  
  101. vtst.useTesterLambda();
  102. vtst.useTesterSimple();
  103. vtst.useTesterVar();
  104.  
  105. }
  106.  
Success #stdin #stdout 0s 4524KB
stdin
Standard input is empty
stdout
 tester's lambda 
inside lambda 0.365
inside lambda 1.365
inside lambda 2.365
inside lambda 3.365
inside lambda 4.365

 tester's simple function 
inside simple function 0.365
inside simple function 1.365
inside simple function 2.365
inside simple function 3.365
inside simple function 4.365

 tester's vars 
0.365
1.365
2.365
3.365
4.365