fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <valarray>
  4. #include <set>
  5. #include <map>
  6.  
  7. template <typename F, typename S>
  8. std::ostream &operator <<(std::ostream &o, const std::pair<F, S> &pair)
  9. {
  10. return o << pair.first << ':' << pair.second;
  11. }
  12.  
  13. template <template <typename ...> class CONTAINER, typename ... ARGS>
  14. std::ostream &operator <<(std::ostream &o, const CONTAINER<ARGS ...> &container)
  15. {
  16. o << '[';
  17. for (const auto &item : container)
  18. {
  19. o << item << ' ';
  20. }
  21. o << ']';
  22.  
  23. return o;
  24. }
  25.  
  26. template <typename T>
  27. void printContainer(const T &value)
  28. {
  29. std::cout << value;
  30. }
  31.  
  32. template <template <typename ...> class CONTAINER, typename ... ARGS>
  33. void printContainer(const CONTAINER<ARGS ...> &container)
  34. {
  35. std::cout << '[';
  36. for (const auto &item : container)
  37. {
  38. printContainer(item);
  39. std::cout << ' ';
  40. }
  41. std::cout << ']';
  42. }
  43.  
  44. std::vector<int> vi { 1, 2, 3, 4, 5 };
  45. std::vector<std::vector<int>> vvi { vi, vi, vi };
  46. std::vector<std::vector<std::vector<int>>> vvvi { vvi, vvi, vvi };
  47.  
  48. std::valarray<int> vai { 1, 2, 3, 4, 5 };
  49. std::valarray<std::valarray<int>> vavai { vai, vai, vai };
  50. std::valarray<std::valarray<std::valarray<int>>> vavavai { vavai, vavai, vavai };
  51.  
  52. std::set<int> si { 1, 2, 3, 4, 5 };
  53. std::set<std::set<int>> ssi { si, {6, 7}, {8, 9} };
  54. std::set<std::set<std::set<int>>> sssi { ssi, {{10, 11}}, {{12, 14}} };
  55.  
  56. std::map<float, std::vector<int>> mfvi {{3.14f, {1, 2, 3}}, {6.28f, {4, 5, 6}}};
  57.  
  58. int main()
  59. {
  60. std::cout << vi << '\n'
  61. << vvi << '\n'
  62. << vvvi << '\n';
  63.  
  64. std::cout << vai << '\n'
  65. << vavai << '\n'
  66. << vavavai << '\n';
  67.  
  68. std::cout << si << '\n'
  69. << ssi << '\n'
  70. << sssi << '\n';
  71.  
  72. std::cout << mfvi << '\n';
  73.  
  74. printContainer(std::string{"Hello world!"});
  75.  
  76. return 0;
  77. }
Success #stdin #stdout 0s 3292KB
stdin
Standard input is empty
stdout
[1 2 3 4 5 ]
[[1 2 3 4 5 ] [1 2 3 4 5 ] [1 2 3 4 5 ] ]
[[[1 2 3 4 5 ] [1 2 3 4 5 ] [1 2 3 4 5 ] ] [[1 2 3 4 5 ] [1 2 3 4 5 ] [1 2 3 4 5 ] ] [[1 2 3 4 5 ] [1 2 3 4 5 ] [1 2 3 4 5 ] ] ]
[1 2 3 4 5 ]
[[1 2 3 4 5 ] [1 2 3 4 5 ] [1 2 3 4 5 ] ]
[[[1 2 3 4 5 ] [1 2 3 4 5 ] [1 2 3 4 5 ] ] [[1 2 3 4 5 ] [1 2 3 4 5 ] [1 2 3 4 5 ] ] [[1 2 3 4 5 ] [1 2 3 4 5 ] [1 2 3 4 5 ] ] ]
[1 2 3 4 5 ]
[[1 2 3 4 5 ] [6 7 ] [8 9 ] ]
[[[1 2 3 4 5 ] [6 7 ] [8 9 ] ] [[10 11 ] ] [[12 14 ] ] ]
[3.14:[1 2 3 ] 6.28:[4 5 6 ] ]
[H e l l o   w o r l d ! ]