fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <initializer_list>
  4. #include <functional>
  5.  
  6. template<typename T>
  7. std::vector<T> merge(std::initializer_list <std::reference_wrapper<const std::vector<T>>> vecs)
  8. {
  9. size_t size = 0;
  10. for(auto &v : vecs) { size += v.get().size(); }
  11. std::vector<T> ret;
  12. ret.reserve(size);
  13. for(auto &v : vecs) { ret.insert(ret.end(), v.get().begin(), v.get().end()); }
  14. return ret;
  15. }
  16.  
  17. int main()
  18. {
  19. std::vector<std::string> a = {"a", "b"};
  20. std::vector<std::string> b = {"c", "d"};
  21. std::vector<std::string> c = {"e", "f"};
  22. std::vector<std::string> d = {"g", "h"};
  23.  
  24. std::vector<std::string> newVector = merge({std::cref(a), std::cref(b), std::cref(c), std::cref(d)});
  25.  
  26. for(auto &s : newVector)
  27. std::cout << s << " ";
  28.  
  29. return 0;
  30. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
a b c d e f g h