fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. template <typename T, size_t array_size>
  7. inline void copy_array_to_vector(vector<T> &vec, T (&arr)[array_size]) {
  8. vec.insert(vec.end(), &(arr[0]), &(arr[array_size]));
  9. }
  10.  
  11. template <typename T>
  12. inline void DFS_cascade_string(vector<string> &vec_str, vector<string> &DFS_vec_str, const vector<T>& vec) {
  13. string str_tmp;
  14. for (int i = 0; i < DFS_vec_str.size(); i++)
  15. str_tmp += DFS_vec_str[i] + " ";
  16.  
  17. for (int i = 0; i < vec.size(); i++)
  18. vec_str.push_back(str_tmp + to_string(vec[i]));
  19. }
  20. template <typename T, typename ... ARGS>
  21. inline void DFS_cascade_string(vector<string> &vec_str, vector<string> &DFS_vec_str, const vector<T>& vec, const ARGS&... args) {
  22.  
  23. for (int i = 0; i < vec.size(); i++) {
  24. DFS_vec_str.push_back(to_string(vec[i]));
  25. DFS_cascade_string(vec_str, DFS_vec_str, args...);
  26. DFS_vec_str.pop_back();
  27. }
  28.  
  29. }
  30. template <typename ... ARGS>
  31. inline void DFS_cascade_string(vector<string> &vec_str, const ARGS&... args) {
  32. vector<string> DFS_vec_str;
  33. DFS_cascade_string(vec_str, DFS_vec_str, args...);
  34. }
  35.  
  36.  
  37. int main() {
  38. // var1
  39. vector<int> vec_var1;
  40. int local_var1[] = { 10, 20, 30, 40};
  41. copy_array_to_vector(vec_var1, local_var1);
  42.  
  43. // var2
  44. vector<double> vec_var2;
  45. double local_var2[] = { 44.0, 88.0 };
  46. copy_array_to_vector(vec_var2, local_var2);
  47.  
  48. // var3
  49. vector<double> vec_var3;
  50. double local_var3[] = { 0.0 };
  51. copy_array_to_vector(vec_var3, local_var3);
  52.  
  53. // var4
  54. vector<double> vec_var4;
  55. double local_var4[] = { 123.0, 150.0 };
  56. copy_array_to_vector(vec_var4, local_var4);
  57.  
  58.  
  59. // ===============================================
  60. // test 1
  61. vector<string> vec_str;
  62. DFS_cascade_string(vec_str, vec_var1, vec_var2, vec_var3);
  63. for (int i = 0; i < vec_str.size(); i++)
  64. printf("[%d], %s\n", i, vec_str[i].c_str());
  65.  
  66.  
  67. printf("\n======================\n\n");
  68.  
  69. // test 2
  70. vec_str.clear();
  71. DFS_cascade_string(vec_str, vec_var1, vec_var2, vec_var3, vec_var4);
  72. for (int i = 0; i < vec_str.size(); i++)
  73. printf("[%d], %s\n", i, vec_str[i].c_str());
  74.  
  75.  
  76. return 0;
  77. }
Success #stdin #stdout 0s 4232KB
stdin
Standard input is empty
stdout
[0], 10 44.000000 0.000000
[1], 10 88.000000 0.000000
[2], 20 44.000000 0.000000
[3], 20 88.000000 0.000000
[4], 30 44.000000 0.000000
[5], 30 88.000000 0.000000
[6], 40 44.000000 0.000000
[7], 40 88.000000 0.000000

======================

[0], 10 44.000000 0.000000 123.000000
[1], 10 44.000000 0.000000 150.000000
[2], 10 88.000000 0.000000 123.000000
[3], 10 88.000000 0.000000 150.000000
[4], 20 44.000000 0.000000 123.000000
[5], 20 44.000000 0.000000 150.000000
[6], 20 88.000000 0.000000 123.000000
[7], 20 88.000000 0.000000 150.000000
[8], 30 44.000000 0.000000 123.000000
[9], 30 44.000000 0.000000 150.000000
[10], 30 88.000000 0.000000 123.000000
[11], 30 88.000000 0.000000 150.000000
[12], 40 44.000000 0.000000 123.000000
[13], 40 44.000000 0.000000 150.000000
[14], 40 88.000000 0.000000 123.000000
[15], 40 88.000000 0.000000 150.000000