fork download
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <iterator>
  4. #include <memory>
  5. #include <numeric>
  6. #include <vector>
  7.  
  8. using namespace std;
  9.  
  10. int main() {
  11. const auto n = 2;
  12.  
  13. {
  14. cout << "vector:\n";
  15.  
  16. vector<vector<int>> v_mod(3, vector<int>(n));
  17.  
  18. for_each(begin(v_mod), end(v_mod), [](auto& i) {static typename remove_reference_t<decltype(i)>::value_type gen = 0; iota(i.begin(), i.end(), gen); gen += i.size(); });
  19. for_each(cbegin(v_mod), cend(v_mod), [](const auto& i) {copy(i.cbegin(), i.cend(), ostream_iterator<typename remove_const_t<remove_reference_t<decltype(i)>>::value_type>(cout, " ")); cout << endl;});
  20. }
  21.  
  22. {
  23. cout << "\nunique_ptr:\n";
  24.  
  25. unique_ptr<int[]> v_mod[3];
  26.  
  27. for (auto& i : v_mod) {
  28. i = make_unique<int[]>(n);
  29. }
  30. for_each(begin(v_mod), end(v_mod), [&](auto& i) {static remove_extent_t<typename remove_reference_t<decltype(i)>::element_type> gen = 0; iota(i.get(), i.get() + n, gen); gen += n; });
  31. for_each(cbegin(v_mod), cend(v_mod), [&](const auto& i) {copy(i.get(), i.get() + n, ostream_iterator<typename remove_const_t<remove_reference_t<decltype(i)>>::element_type>(cout, " ")); cout << endl;});
  32. }
  33.  
  34. {
  35. cout << "\nnew:\n";
  36.  
  37. int* v_mod[3];
  38.  
  39. for (auto& i : v_mod) {
  40. i = new int[n];
  41. }
  42.  
  43. for_each(begin(v_mod), end(v_mod), [&](auto& i) {static remove_pointer_t<remove_reference_t<decltype(i)>> gen = 0; iota(i, i + n, gen); gen += n; });
  44. for_each(cbegin(v_mod), cend(v_mod), [&](const auto& i) {copy(i, i + n, ostream_iterator<remove_pointer_t<remove_const_t<remove_reference_t<decltype(i)>>>>(cout, " ")); cout << endl;});
  45.  
  46. for (auto& i : v_mod) {
  47. delete[] i;
  48. }
  49. }
  50. }
Success #stdin #stdout 0s 3416KB
stdin
Standard input is empty
stdout
vector:
0 1 
2 3 
4 5 

unique_ptr:
0 1 
2 3 
4 5 

new:
0 1 
2 3 
4 5